module orelang.expression.ClassType; import orelang.Engine, orelang.Value; class ClassType { string className; Engine _engine; this(string className, Engine _engine) { this.className = className; this._engine = _engine; } public Value call(Engine engine, Value[] args) { string funcName; if (args[0].type == ValueType.SymbolValue) { funcName = args[0].getString; } else { funcName = engine.eval(args[0]).getString; } Value member = this._engine.variables[funcName]; if (member.type == ValueType.IOperator) { return member.getIOperator.call(this._engine, args.length > 1 ? args[1..$] : (Value[]).init); } else { return member; } } }