Как мы пишем, если еще если в pharo?
Я должен проверить 3 условия, используя ifif if elseif. Как я могу сделать это в фаро. Я сделал, но не уверен, так как я не нашел такого приложения в pharo.
x = 25
ifTrue:[DoSomething]
ifFalse:[DoSomething else].
x < 25
ifTrue: [DoSomething]
ifFalse:[Domething else].
x > 25
ifTrue: [DoSomething ]
ifFalse:[DoSomething else].
1 ответ
Вы можете выбрать другой дизайн (используя полиморфизм, поиск, ...), но это практически одинаково для любого языка ОО (в частности, для Smalltalk, обратитесь к этой Рефакторинг if-цепочек в Smalltalk без взрыва класса).
В Smalltalk (и нескольких других языках, таких как Ruby) у вас есть одна дополнительная опция - расширение класса. Вы можете создавать собственные операторы "если", которые хорошо соответствуют вашему конкретному домену и делают код более очевидным.
Например, в данном примере я мог бы добавить новый метод к Number
класс называется compareTo:lesser:equal:greater:
, а затем ваш код меняется на
x compareTo: 25
lesser: [ do something ]
equals: [ do something else ]
greater: [ do something entirely different ]
Это, естественно, зависит от вашего конкретного домена, возможно, в другом случае формулировка будет другой. Например, в случае коллекций, есть col ifEmpty: [ ] ifNotEmpty: [ ]
для ноля есть ifNil:ifNotNil:
для обнаружения detect:ifFound:ifNone:
, для словарей at:ifPresent:ifAbsent:
, так далее.