Skip to content

Instantly share code, notes, and snippets.

@Simn
Created March 5, 2014 12:08
Show Gist options
  • Save Simn/9365984 to your computer and use it in GitHub Desktop.
Save Simn/9365984 to your computer and use it in GitHub Desktop.
@:generic map copy
class Main {
function new() { }
static function main() {
var intMap = [1 => "foo", 2 => "bar"];
var stringMap = ["foo" => 1, "bar" => 2];
var m1 = new Main();
var m2 = new Main();
var objMap = [m1 => "foo", m2 => "bar"];
var intMapCopy = copyMap(intMap);
var stringMapCopy = copyMap(stringMap);
var objMapCopy = copyMap(objMap);
eq(intMap[1], intMapCopy[1]);
eq(intMap[2], intMapCopy[2]);
eq(stringMap["foo"], stringMapCopy["foo"]);
eq(stringMap["bar"], stringMapCopy["bar"]);
eq(objMap[m1], objMapCopy[m1]);
eq(objMap[m2], objMapCopy[m2]);
}
@:generic static function copyMap<K, V>(m:Map<K, V>) {
var ret = new Map();
for (k in m.keys()) {
ret[k] = m[k];
}
return ret;
}
static function eq<T>(expected:T, actual:T, ?p:haxe.PosInfos) {
if (expected != actual) {
haxe.Log.trace('$actual should be $expected', p);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment