我想创建一个方法,将块作为参数获取,块也获取参数.如果块返回true,它应该执行某些操作(例如返回1),如果返回false,则应该执行其他操作.
这就是我所做的..但我在ifTrue上得到语法错误...这是我应该得到一个接收参数的块作为参数的方式吗?
Mymethod: Block
Block value: 'argument'
ifTrue: [ ^1].
ifFalse: [^2].
Run Code Online (Sandbox Code Playgroud)
以及对方法的调用:
object := myClass new.
argument :=1
boolValue := object Mymethod : [:argument | argument ==1 ]
Run Code Online (Sandbox Code Playgroud)
你写它的方式意味着#value:ifTrue:
消息到块,然后你发送#ifFalse:
消息到没有(这根本不可能.如果你想在一行中,你应该使用括号:
(Block value: 'argument')
ifTrue: [ ^1]
ifFalse: [^2]
Run Code Online (Sandbox Code Playgroud)
同样在smalltalk中,使用非大写的命名变量是一种惯例,如block
或aBlock