由于 Smalltalk 不鼓励使用 case Of:,有什么替代方案可以实现以下情况而不会发生类爆炸?
self condition1
ifTrue: [ self actionForCondition1 ]
ifFalse: [
self condition2
ifTrue: [ self actionForCondition2 ]
ifFalse: [
self condition3
ifTrue: [ self actionForCondition3 ]
ifFalse: [ .... ] ] ]
最佳答案
取决于你的条件到底是什么样的?
anObject isKindOf: aClass
你可以在类上调度,这意味着你在
anObject
上调用一个 Action 方法. anObject = anotherObject
您可以使用以对象为键的字典和作为块闭包的操作。
self condition1
ifTrue: [ ^ self actionForCondition1 ].
self condition2
ifTrue: [ ^ self actionForCondition2 ].
self condition3
ifTrue: [ ^ self actionForCondition3 ].
...
关于if-statement - 在 Smalltalk 中重构 if-chains 没有类爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113497/