mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Возможность изменения полей в классах через ссылку на экземпляр
This commit is contained in:
parent
b82596cd87
commit
e217e3bb84
@ -43,6 +43,15 @@ public class ClassInstanceValue implements Value {
|
|||||||
return thisMap.get(value);
|
return thisMap.get(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void set(Value key, Value value) {
|
||||||
|
final Value v = thisMap.get(key);
|
||||||
|
if (v == null) {
|
||||||
|
throw new RuntimeException("Unable to add new field "
|
||||||
|
+ key.asString() + " to class " + className);
|
||||||
|
}
|
||||||
|
thisMap.set(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object raw() {
|
public Object raw() {
|
||||||
return null;
|
return null;
|
||||||
|
@ -73,6 +73,10 @@ public final class ContainerAccessExpression implements Expression, Accessible {
|
|||||||
((MapValue) container).set(lastIndex, value);
|
((MapValue) container).set(lastIndex, value);
|
||||||
return value;
|
return value;
|
||||||
|
|
||||||
|
case Types.CLASS:
|
||||||
|
((ClassInstanceValue) container).set(lastIndex, value);
|
||||||
|
return value;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new TypeException("Array or map expected. Got " + container.type());
|
throw new TypeException("Array or map expected. Got " + container.type());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user