/// <summary> /// 以名称获取字段,没有就返回nil /// </summary> /// <param name="name"></param> /// <returns></returns> public ScriptObject GetFileld(string filed) { Contract.Assert(Type == ValueType.TABLE); TablePart tablePart = Value.RefPartHandle.ConverToTablePart(); ScriptObject s = tablePart.TryGetValue(filed); if (s != null) { return(s); } ScriptObject metaTable = tablePart.MetaTable; if (metaTable != null) { s = metaTable.GetFileld("_index"); if (s.Type == ValueType.TABLE) { return(s.GetFileld(filed)); } else if (s.Type == ValueType.FUNCTION) { //多一次拷贝(实际上) //RunEnvironment.Instance.LocalStack.InvokeFunction(s, this, ScriptObject.CreateString(filed)); StackState state = RunEnvironment.Instance.LocalStack; state.PushFunction(s); state.Push(this); state.Push(filed); return(state.InvokeFunction()); } } return(RunEnvironment.Nil); }
public static ScriptObject Indexof(ScriptObject own, ScriptObject index) { return(own.GetFileld(index)); }
/// <summary> /// 从 own 返回 filed 字段,没有就为nil /// </summary> public static ScriptObject Select(ScriptObject own, string filed) { return(own.GetFileld(filed)); }
/// <summary> /// 从 own 返回 filed 字段,没有就为nil /// </summary> public static ScriptObject Select(ScriptObject own, string filed) { return own.GetFileld(filed); }
public static ScriptObject Indexof(ScriptObject own, ScriptObject index) { return own.GetFileld(index); }