我们如何在pharo中写下elseif elseif?

时间:2018-01-25 11:52:28

标签: smalltalk pharo pharo-5

我必须使用if elseif elseif检查3个条件。我怎么能在pharo中做到这一点。我做了但不确定,因为我没有在pharo中找到任何这样的应用程序。

x = 25
ifTrue:[DoSomething]
ifFalse:[DoSomething else].
								
x < 25
ifTrue: [DoSomething]
ifFalse:[Domething else].
									
x > 25
ifTrue: [DoSomething ]
ifFalse:[DoSomething else].

1 个答案:

答案 0 :(得分:3)

您可以选择不同的设计(使用多态,查找,...),但对于任何OO语言都是如此(特别是对于Smalltalk,请参阅此Refactoring if-chains in Smalltalk without class explosion)。

在Smalltalk(和其他语言如Ruby)中,你有一个额外的选项,那就是类扩展。您可以设计自己的&#34; if&#34;与您的特定域匹配良好的语句,使代码更加明显。

E.g。在您给出的示例中,我可以向名为Number的{​​{1}}类添加新方法,然后您的代码更改为

compareTo:lesser:equal:greater:

这自然取决于您的特定领域,可能在不同的情况下,措辞会有所不同。例如。在收集的情况下,有x compareTo: 25 lesser: [ do something ] equals: [ do something else ] greater: [ do something entirely different ] ,nil那里col ifEmpty: [ ] ifNotEmpty: [ ],用于检测ifNil:ifNotNil:,用于词典detect:ifFound:ifNone:等。