diff options
author | 2021-03-17 22:52:35 -0700 | |
---|---|---|
committer | 2021-03-17 22:52:35 -0700 | |
commit | 580a5acb580a858c8ffa705f5f64f095cb0b4b37 (patch) | |
tree | e0ac4b327ad2993b21304b1e5ba84819cad64034 /src/com/craftinginterpreters/lox/LoxInstance.java | |
parent | b04b6bcf2f31526f6cfa593c342165a65cb9e7ac (diff) | |
download | crafting-interpreters-580a5acb580a858c8ffa705f5f64f095cb0b4b37.tar.gz crafting-interpreters-580a5acb580a858c8ffa705f5f64f095cb0b4b37.zip |
Chapter 12, Sections 1, 2, and 3
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"; + } +} |