Присвоение значений для map

This commit is contained in:
Victor 2016-01-08 22:58:39 +02:00
parent 09556f7a9a
commit fa2295ad18
3 changed files with 15 additions and 3 deletions

View File

@ -85,6 +85,8 @@ for i = 0, i < 4, i = i + 1 {
// map // map
map = {"+" : add, "-" : sub. "*" : mul, "/" : div} map = {"+" : add, "-" : sub. "*" : mul, "/" : div}
map["%"] = def(x,y) = x % y
map["pow"] = def(x,y) = pow(x, y)
//print map["+"] //print map["+"]
print "\n" print "\n"
print function(map["+"], 4, 5) print function(map["+"], 4, 5)
@ -98,3 +100,4 @@ arr2 = [5,6,7]
print arr1 print arr1
print "\n" print "\n"
print arr1 << arr2 print arr1 << arr2

View File

@ -54,7 +54,7 @@ public final class ArrayAccessExpression implements Expression {
} }
} }
private MapValue consumeMap(Value value) { public MapValue consumeMap(Value value) {
if (value instanceof MapValue) { if (value instanceof MapValue) {
return (MapValue) value; return (MapValue) value;
} else { } else {

View File

@ -1,5 +1,9 @@
package com.annimon.ownlang.parser.ast; package com.annimon.ownlang.parser.ast;
import com.annimon.ownlang.lib.ArrayValue;
import com.annimon.ownlang.lib.Value;
import com.annimon.ownlang.lib.Variables;
/** /**
* *
* @author aNNiMON * @author aNNiMON
@ -16,7 +20,12 @@ public final class ArrayAssignmentStatement implements Statement {
@Override @Override
public void execute() { public void execute() {
array.getArray().set(array.lastIndex(), expression.eval()); final Value container = Variables.get(array.variable);
if (container instanceof ArrayValue) {
array.getArray().set(array.lastIndex(), expression.eval());
return;
}
array.consumeMap(container).set(array.indices.get(0).eval(), expression.eval());
} }
@Override @Override