块和ifTrue语句

时间:2014-11-12 12:56:55

标签: smalltalk squeak

我想创建一个获取块作为参数的方法,并且块也获取参数。 如果块返回true,它应该执行某些操作(例如返回1),如果返回false,则应该执行其他操作。

这就是我所做的..但我在ifTrue上遇到语法错误... 这是我应该得到一个接收参数块的参数的方式吗?

Mymethod: Block

Block value: 'argument'
ifTrue: [ ^1]. 
ifFalse: [^2].

并调用方法:

object := myClass new.
argument :=1
boolValue := object Mymethod : [:argument | argument ==1 ]

1 个答案:

答案 0 :(得分:5)

你写它的方式意味着#value:ifTrue:消息到阻止,然后你发送#ifFalse:消息到任何东西(根本不可能。如果你想在一行中做到这一点,你应该使用括号:

(Block value: 'argument')
  ifTrue: [ ^1]
  ifFalse: [^2]

同样在smalltalk中,将{@ 1}}或block

等未变更的变量命名为惯例