/// <summary> /// 呼び出します。 /// </summary> /// <param name="context"></param> /// <param name="args">引数</param> /// <returns>返り値</returns> protected internal override KecaknoahFunctionResult Call(KecaknoahContext context, KecaknoahObject[] args) { if (args != null) { CurrentFrame = new KecaknoahStackFrame(context, BaseMethod.Codes); CurrentFrame.Locals["self"] = KecaknoahReference.Right(Instance); CurrentFrame.Arguments = args; if (args.Length > BaseMethod.ArgumentLength) { CurrentFrame.VariableArguments = args.Skip(BaseMethod.ArgumentLength).ToList(); } } var r = CurrentFrame.Resume(); return new KecaknoahFunctionResult(CurrentFrame.ReturningObject, r); }
private static KecaknoahFunctionResult Format(KecaknoahContext context, KecaknoahObject self, KecaknoahObject[] args) { var b = args[0].ToString(); var ar = args.Skip(1).Select(p => p.ToString()).ToArray(); return string.Format(b, ar).AsKecaknoahString().NoResume(); }