added a new method directive #liberal to indicate a method that accept a fully variadic number of arguments.
the directive #liberal allows the caller to omit the named arguments as well. the directive #variadic requires the caller to provide at least the named arguments
This commit is contained in:
		| @ -145,6 +145,7 @@ class MyObject(TestObject) | ||||
| 		self varg_test (10, 20, 30, 40, 50) dump. | ||||
| 		self varg_test2 (10, 20, 30, 40, 50) dump. | ||||
| 		self varg_test3 (10, 20, 30, 40, 50) dump. | ||||
| 		self varg_test3 (10, 20, 30, 40, 50, 60, 70, 80, 90, 100) dump. | ||||
| 		thisContext vargCount dump. | ||||
| 		thisContext vargCount dump. | ||||
| 		 | ||||
| @ -204,21 +205,29 @@ class MyObject(TestObject) | ||||
| 	} | ||||
| 	method(#class,#variadic) varg_test2(a,b,c) | ||||
| 	{ | ||||
| 		0 to: (thisContext vargCount - 1) do: [:k | | ||||
| 		'varg_test2 start .....' dump. | ||||
| 		a dump. | ||||
| 		b dump. | ||||
| 		c dump. | ||||
| 		'varg_test2 varg .....' dump. | ||||
| 		0 priorTo: (thisContext vargCount) do: [:k | | ||||
| 			(thisContext vargAt: k) dump. | ||||
| 		]. | ||||
| 		'varg_test2 end .....' dump. | ||||
| 		^a | ||||
| 	} | ||||
| 	method(#class,#variadic) varg_test3(a,b,c,d,e,f) | ||||
| 	method(#class,#liberal) varg_test3(a,b,c,d,e,f) | ||||
| 	{ | ||||
| 		0 to: (thisContext vargCount - 1) do: [:k | | ||||
| 		'varg_test3 start .....' dump. | ||||
| 		0 priorTo: (thisContext vargCount) do: [:k | | ||||
| 			(thisContext vargAt: k) dump. | ||||
| 		]. | ||||
| 		'varg_test3 end .....' dump. | ||||
| 		## ^b * 100 | ||||
| 		^f | ||||
| 	} | ||||
| 	 | ||||
| 	method(#class,#variadic) t001(a) | ||||
| 	method(#class,#liberal) t001(a) | ||||
| 	{ | ||||
| 		a isNil ifTrue: [^error(10)]. | ||||
| 		(a = 20) ifTrue: [^error]. | ||||
|  | ||||
		Reference in New Issue
	
	Block a user