我想创建一个获取块作为参数的方法,并且块也获取参数。 如果块返回true,它应该执行某些操作(例如返回1),如果返回false,则应该执行其他操作。
这就是我所做的..但我在ifTrue上遇到语法错误... 这是我应该得到一个接收参数块的参数的方式吗?
Mymethod: Block
Block value: 'argument'
ifTrue: [ ^1].
ifFalse: [^2].
并调用方法:
object := myClass new.
argument :=1
boolValue := object Mymethod : [:argument | argument ==1 ]
答案 0 :(得分:5)
你写它的方式意味着#value:ifTrue:
消息到阻止,然后你发送#ifFalse:
消息到任何东西(根本不可能。如果你想在一行中做到这一点,你应该使用括号:
(Block value: 'argument')
ifTrue: [ ^1]
ifFalse: [^2]
同样在smalltalk中,将{@ 1}}或block