16 lines
530 B
Smalltalk
16 lines
530 B
Smalltalk
tryAll:valuesCollection in:aBlock
|
|
"try each set of values in aBlock;
|
|
aBlock's number of args must be the number of elements in valuesCollection"
|
|
|
|
|tryAll|
|
|
|
|
tryAll :=
|
|
[:valuesCollection :argsIn |
|
|
valuesCollection isEmpty ifTrue:[
|
|
aBlock valueWithArguments:argsIn
|
|
] ifFalse:[
|
|
self try:(valuesCollection first) in:[:arg |
|
|
tryAll value:(valuesCollection from:2) value:argsIn,{arg} ]]].
|
|
|
|
^ tryAll value:valuesCollection value:#()
|