mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Авто вызов toString() (#9)
* Added auto toString() * Update ClassInstanceValue.java
This commit is contained in:
parent
493a3995a9
commit
d18a14b2ac
@ -8,6 +8,7 @@ public class ClassInstanceValue implements Value {
|
||||
private final String className;
|
||||
private final MapValue thisMap;
|
||||
private ClassMethod constructor;
|
||||
private UserDefinedFunction toString;
|
||||
|
||||
public ClassInstanceValue(String name) {
|
||||
this.className = name;
|
||||
@ -27,12 +28,16 @@ public class ClassInstanceValue implements Value {
|
||||
}
|
||||
|
||||
public void addMethod(String name, ClassMethod method) {
|
||||
if (name.equals("toString")) {
|
||||
toString = method;
|
||||
}
|
||||
thisMap.set(name, method);
|
||||
if (name.equals(className)) {
|
||||
constructor = method;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void callConstructor(Value[] args) {
|
||||
if (constructor != null) {
|
||||
constructor.execute(args);
|
||||
@ -69,7 +74,10 @@ public class ClassInstanceValue implements Value {
|
||||
|
||||
@Override
|
||||
public String asString() {
|
||||
return "class " + className + "@" + thisMap;
|
||||
if (toString != null) {
|
||||
return toString.execute(new Value[] {}).asString();
|
||||
}
|
||||
return className + "@" + thisMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user