Răsfoiți Sursa

Merge branch 'master' of https://github.com/xanathar/moonsharp.git

Xanathar 11 ani în urmă
părinte
comite
9c5aeebc00

+ 10 - 2
src/MoonSharp.Interpreter/CoreLib/BasicModule.cs

@@ -123,9 +123,17 @@ namespace MoonSharp.Interpreter.CoreLib
 		[MoonSharpMethod]
 		[MoonSharpMethod]
 		public static DynValue select(ScriptExecutionContext executionContext, CallbackArguments args)
 		public static DynValue select(ScriptExecutionContext executionContext, CallbackArguments args)
 		{
 		{
-			
 			if (args[0].Type == DataType.String && args[0].String == "#")
 			if (args[0].Type == DataType.String && args[0].String == "#")
-				return DynValue.NewNumber(args.Count - 1);
+			{
+				if (args[args.Count - 1].Type == DataType.Tuple)
+				{
+					return DynValue.NewNumber(args.Count - 1 + args[args.Count - 1].Tuple.Length);
+				}
+				else
+				{
+					return DynValue.NewNumber(args.Count - 1);
+				}
+			}
 
 
 			DynValue v_num = args.AsType(0, "select", DataType.Number, false);
 			DynValue v_num = args.AsType(0, "select", DataType.Number, false);
 			int num = (int)v_num.Number;
 			int num = (int)v_num.Number;

+ 1 - 1
src/MoonSharp.Interpreter/Execution/VM/Processor/Processor_InstructionLoop.cs

@@ -603,7 +603,7 @@ namespace MoonSharp.Interpreter.Execution.VM
 						varargs[ii] = m_ValueStack.Peek(numargs - i - ii).CloneAsWritable();
 						varargs[ii] = m_ValueStack.Peek(numargs - i - ii).CloneAsWritable();
 					}
 					}
 
 
-					this.AssignLocal(I.SymbolList[i], DynValue.NewTuple(varargs));
+					this.AssignLocal(I.SymbolList[i], DynValue.NewTuple(Internal_AdjustTuple(varargs)));
 				}
 				}
 				else
 				else
 				{
 				{