diff options
Diffstat (limited to 'src/com/craftinginterpreters/lox/LoxClass.java')
-rw-r--r-- | src/com/craftinginterpreters/lox/LoxClass.java | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/com/craftinginterpreters/lox/LoxClass.java b/src/com/craftinginterpreters/lox/LoxClass.java deleted file mode 100644 index 5d1c136..0000000 --- a/src/com/craftinginterpreters/lox/LoxClass.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.craftinginterpreters.lox; - -import java.util.List; -import java.util.Map; - -class LoxClass implements LoxCallable { - final String name; - final LoxClass superclass; - private final Map<String, LoxFunction> methods; - - LoxClass(String name, LoxClass superclass, Map<String, LoxFunction> methods) { - this.superclass = superclass; - this.name = name; - this.methods = methods; - } - - LoxFunction findMethod(String name) { - if (methods.containsKey(name)) { - return methods.get(name); - } - - if (superclass != null) { - return superclass.findMethod(name); - } - - return null; - } - - @Override - public String toString() { - return name; - } - - @Override - public Object call(Interpreter interpreter, List<Object> arguments) { - LoxInstance instance = new LoxInstance(this); - LoxFunction initializer = findMethod("init"); - if (initializer != null) { - initializer.bind(instance).call(interpreter, arguments); - } - return instance; - } - - - @Override - public int arity() { - LoxFunction initializer = findMethod("init"); - if (initializer == null) return 0; - return initializer.arity(); - } -} |