38 lines
800 B
Java
38 lines
800 B
Java
package com.craftinginterpreters.lox;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
class LoxClass implements LoxCallable {
|
|
final String name;
|
|
private final Map<String, LoxFunction> methods;
|
|
|
|
LoxClass(String name, Map<String, LoxFunction> methods) {
|
|
this.name = name;
|
|
this.methods = methods;
|
|
}
|
|
|
|
LoxFunction findMethod(String name) {
|
|
if (methods.containsKey(name)) {
|
|
return methods.get(name);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return name;
|
|
}
|
|
|
|
@Override
|
|
public Object call(Interpreter interpreter, List<Object> arguments) {
|
|
LoxInstance instance = new LoxInstance(this);
|
|
return instance;
|
|
}
|
|
|
|
@Override
|
|
public int arity() {
|
|
return 0;
|
|
}
|
|
}
|