|
Class: VarArgBlock
Object
|
+--ExecutableFunction
|
+--CompiledCode
|
+--Block
|
+--VarArgBlock
- Package:
- stx:libbasic
- Category:
- Kernel-Methods
- Version:
- rev:
1.9
date: 2017/10/11 13:55:36
- user: cg
- file: VarArgBlock.st directory: libbasic
- module: stx stc-classLibrary: libbasic
- Author:
- Claus Gittinger
VarArgBlocks are much like blocks, but can accept a variable
number of arguments. They must be defined as a regular block,
with 1 argument. When executed, the actual argument list is
passed in that single argument (as a collection).
Create a variableArgument block by sending #asVarArgBlock to a regular
block.
This is a goody add-on, which may not be available/possible in other
smalltalk implementations. Do not use it if cross-platform
portability is required.
Block
initialization
-
initialize
-
must clear the is-block flag bit in the class
(otherwise, the VM might try to inline value-messages)
usage example(s):
self flags.
self initialize.
self flags.
|
evaluation
-
value
-
evaluate the receiver with no block args.
-
value: arg
-
evaluate the receiver with a single argument.
-
value: arg1 value: arg2
-
evaluate the receiver with two arguments.
-
value: arg1 value: arg2 value: arg3
-
evaluate the receiver with three arguments.
-
value: arg1 value: arg2 value: arg3 value: arg4
-
evaluate the receiver with four arguments.
-
value: arg1 value: arg2 value: arg3 value: arg4 value: arg5
-
evaluate the receiver with five arguments.
-
value: arg1 value: arg2 value: arg3 value: arg4 value: arg5 value: arg6
-
evaluate the receiver with six arguments.
-
value: arg1 value: arg2 value: arg3 value: arg4 value: arg5 value: arg6 value: arg7
-
evaluate the receiver with seven arguments.
-
value: arg1 value: arg2 value: arg3 value: arg4 value: arg5 value: arg6 value: arg7 value: arg8
-
evaluate the receiver with eight arguments.
-
valueWithArguments: argArray
-
evaluate the receiver with all arguments in argArray.
testing
-
isVarArgBlock
-
return true, if this block accepts a variable number of arguments
the same block, evaluated with 2 or 5 arguments:
|b|
b := [:args | Transcript show:'wow: '; showCR:args] asVarArgBlock.
b value:'hi' value:'there'.
b value:'hello' value:'there' value:'how' value:'about' value:'this'.
|
does it accept a variable number of arguments ?:
|b|
b := [:args | Transcript showCR:args].
Transcript showCR:(b isVarArgBlock).
b := [:args | Transcript showCR:args] asVarArgBlock.
Transcript showCR:(b isVarArgBlock)
|
|