由于 Smalltalk 不鼓励使用 caseOf:,那么有哪些替代方案可以实现以下情况而不导致类爆炸?
self condition1
ifTrue: [ self actionForCondition1 ]
ifFalse: [
self condition2
ifTrue: [ self actionForCondition2 ]
ifFalse: [
self condition3
ifTrue: [ self actionForCondition3 ]
ifFalse: [ .... ] ] ]
具体要看你的条件怎么样?
-
如果您的条件是型式试验
anObject isKindOf: aClass
您可以在类上分派,这意味着您可以调用一个操作方法anObject
.
-
如果你的条件是平等测试
anObject = anotherObject
您可以使用字典,其中对象作为键,操作作为块闭包。
-
作为最后的手段,如果没有其他帮助,您可能需要重写建议的代码以避免不必要的嵌套:
self condition1
ifTrue: [ ^ self actionForCondition1 ].
self condition2
ifTrue: [ ^ self actionForCondition2 ].
self condition3
ifTrue: [ ^ self actionForCondition3 ].
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)