--- a/Block.st Thu Oct 13 12:33:59 2016 +0200
+++ b/Block.st Thu Oct 13 14:43:12 2016 +0200
@@ -1071,6 +1071,105 @@
"
!
+value:arg1 optionalArgument:arg2 and:arg3 and:arg4
+ "evaluate the receiver.
+ Optionally pass up one, two, three or four arguments
+ (if the receiver is a 1/2/3/4-arg block)."
+
+ nargs == 4 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4
+ ].
+ nargs == 3 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3
+ ].
+ nargs == 2 ifTrue:[
+ ^ self value:arg1 value:arg2
+ ].
+ ^ self value:arg1
+
+ "
+ |block|
+
+ block := [:arg | Transcript showCR:arg ].
+ block value:1 optionalArgument:2 and:3 and:4.
+
+ block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
+ block value:1 optionalArgument:2 and:3 and:4.
+
+ block := [:arg1 :arg2 :arg3 :arg4 | Transcript showCR:{arg1 . arg2 . arg3 . arg4}].
+ block value:1 optionalArgument:2 and:3 and:4.
+ "
+!
+
+value:arg1 optionalArgument:arg2 and:arg3 and:arg4 and:arg5
+ "evaluate the receiver.
+ Optionally pass up five arguments
+ (if the receiver is a 1..5-arg block)."
+
+ nargs == 5 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5
+ ].
+ nargs == 4 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4
+ ].
+ nargs == 3 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3
+ ].
+ nargs == 2 ifTrue:[
+ ^ self value:arg1 value:arg2
+ ].
+ ^ self value:arg1
+
+ "
+ |block|
+
+ block := [:arg | Transcript showCR:arg ].
+ block value:1 optionalArgument:2 and:3 and:4 and:5.
+
+ block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
+ block value:1 optionalArgument:2 and:3 and:4 and:5.
+
+ block := [:arg1 :arg2 :arg3 :arg4 :arg5 | Transcript showCR:{arg1 . arg2 . arg3 . arg4 . arg5}].
+ block value:1 optionalArgument:2 and:3 and:4 and:5.
+ "
+!
+
+value:arg1 optionalArgument:arg2 and:arg3 and:arg4 and:arg5 and:arg6
+ "evaluate the receiver.
+ Optionally pass up six arguments
+ (if the receiver is a 1..6-arg block)."
+
+ nargs == 6 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5 value:arg6
+ ].
+ nargs == 5 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4 value:arg5
+ ].
+ nargs == 4 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4
+ ].
+ nargs == 3 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3
+ ].
+ nargs == 2 ifTrue:[
+ ^ self value:arg1 value:arg2
+ ].
+ ^ self value:arg1
+
+ "
+ |block|
+
+ block := [:arg | Transcript showCR:arg ].
+ block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
+
+ block := [:arg1 :arg2 | Transcript show:arg1; space; showCR:arg2 ].
+ block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
+
+ block := [:arg1 :arg2 :arg3 :arg4 :arg5 :arg6 | Transcript showCR:{arg1 . arg2 . arg3 . arg4 . arg5 . arg6}].
+ block value:1 optionalArgument:2 and:3 and:4 and:5 and:6.
+ "
+!
+
value:arg1 value:arg2
"evaluate the receiver with two arguments.
The receiver must be a 2-arg block."
@@ -1171,6 +1270,16 @@
^ self wrongNumberOfArguments:3
!
+value:arg1 value:arg2 value:arg3 optionalArgument:arg4
+ "evaluate the receiver.
+ Optionally pass three or four arguments (if the receiver is a 3/4-arg block)."
+
+ nargs == 4 ifTrue:[
+ ^ self value:arg1 value:arg2 value:arg3 value:arg4
+ ].
+ ^ self value:arg1 value:arg2 value:arg3
+!
+
value:arg1 value:arg2 value:arg3 value:arg4
"evaluate the receiver with four arguments.
The receiver must be a 4-arg block."