如果 elseif elseif in pharo 中,我们如何写



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

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

选择不同的设计(使用多态性,查找,...(,但对于任何OO语言来说,这几乎是一样的(特别是对于Smalltalk,请参考这个重构if链在Smalltalk中没有类爆炸(。

在Smalltalk(以及Ruby等其他语言(中,您有一个额外的选择,那就是类扩展。您可以设计自己的"if"语句,这些语句与您的特定域匹配,并使代码更加明显。

例如,在您给出的示例中,我可以向Number类添加一个名为 compareTo:lesser:equal:greater: 的新方法,然后您的代码更改为

x compareTo: 25
    lesser: [ do something ]
    equals: [ do something else ]
    greater: [ do something entirely different ]

这自然取决于您的特定领域,也许在不同的情况下,措辞会有所不同。 例如,在集合的情况下,有col ifEmpty: [ ] ifNotEmpty: [ ],对于 nil 有 ifNil:ifNotNil:,对于检测detect:ifFound:ifNone:,对于字典at:ifPresent:ifAbsent:,等等。

相关内容

最新更新