ifEmpty消息的当前状态是什么:ifNotEmpty:,ifEmpty:,ifNotEmpty:ifNil:ifNotNil:,ifNil:和ifNotNil:?
它们是否可用于Smalltalks,它们的行为是否一致?在旧代码中仍然会看到“object isEmpty ifTrue:[...] ifFalse:[...]”之类的内容。
答案 0 :(得分:6)
目前,我认为Seaside coding convetions:
涵盖了最先进的技术水平可移植性
[...]
不要使用任何这些方法,它们在某些平台上缺失,损坏或具有不同的语义:
[...]
- 对象:
#ifNotNil:
,#ifNotNilDo:
,#in:
,...- 布尔:
#and:and:and:
,#or:or:or:
,...- 收藏集:
#=
,#pairsDo:
,#with:collect:
- 字符串:
#match:
- 流:
#position
,#position:
,#isEmpty
[...]
(真的由你突出)
由于Seaside已被移植到Pharo,Squeak,GemStone,Dolphin,VisualWorks,VA Smalltalk,GNU Smalltalk,我认为此列表具有一定的权威性。
另请注意,即使#isEmpty
似乎也不可移植,至少对于Streams来说。