put method
Implementation
void put(Object? key, Object? val) {
if (key == null) {
throw Exception("table index is nil!");
}
if (key is double && key.isNaN) {
throw Exception("table index is NaN!");
}
changed = true;
key = floatToInteger(key);
if (key is int) {
int idx = key;
if (idx >= 1) {
if (arr == null) {
arr = <Object?>[];
}
int arrLen = arr!.length;
if (idx <= arrLen) {
arr![idx - 1] = val;
if (idx == arrLen && val == null) {
shrinkArray();
}
return;
}
if (idx == arrLen + 1) {
if (map != null) {
map!.remove(key);
}
if (val != null) {
arr!.add(val);
expandArray();
}
return;
}
}
}
if (val != null) {
if (map == null) {
map = HashMap<Object?, Object>();
}
map![key] = val;
} else {
if (map != null) {
map!.remove(key);
}
}
}