我必须使用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].
答案 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:
等。