diff options
Diffstat (limited to 'src/com/craftinginterpreters/lox/LoxInstance.java')
-rw-r--r-- | src/com/craftinginterpreters/lox/LoxInstance.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/com/craftinginterpreters/lox/LoxInstance.java b/src/com/craftinginterpreters/lox/LoxInstance.java new file mode 100644 index 0000000..4e5eb9e --- /dev/null +++ b/src/com/craftinginterpreters/lox/LoxInstance.java @@ -0,0 +1,30 @@ +package com.craftinginterpreters.lox; + +import java.util.HashMap; +import java.util.Map; + +class LoxInstance { + private LoxClass klass; + private final Map<String, Object> fields = new HashMap<>(); + + LoxInstance(LoxClass klass) { + this.klass = klass; + } + + Object get(Token name) { + if (fields.containsKey(name.lexeme)) { + return fields.get(name.lexeme); + } + + throw new RuntimeError(name, "Undefined proprety '" + name.lexeme + "'."); + } + + void set(Token name, Object value) { + fields.put(name.lexeme, value); + } + + @Override + public String toString() { + return klass.name + " instance"; + } +} |