2014-01-11 4 views
5

Каково текущее состояние сообщений типа ifEmpty: ifNotEmpty :, ifEmpty :, ifNotEmpty: ifNil: ifNotNil :, ifNil: и ifNotNil :?Состояние ifEmpty: ifNotEmpty :, ifNil: ifNotNil: и связанные сообщения через Smalltalks?

Доступны ли они через Smalltalks, и они ведут себя последовательно? Вы все еще видите такие вещи, как «object isEmpty ifTrue: [...] ifFalse: [...]» в более старом коде.

ответ

6

В настоящее время, я думаю, что состояние искусства покрыто очень хорошо по Seaside coding convetions:

Портативность

[...]

Не использовать любой из этих методов, они отсутствуют, разбиты или имеют разную семантику на некоторых платформах:

[...]

  • Объект: #ifNotNil:, #ifNotNilDo:, #in: ...
  • Boolean: #and:and:and:, #or:or:or: ...
  • Коллекция: #=, #pairsDo:, #with:collect:
  • Строка: #match:
  • поток : #position, #position:, #isEmpty

[...]

(подсветка на вашего покорного слугу)

С Seaside была портирована Pharo, пищат, GemStone, Дельфин, VisualWorks, В. А. Smalltalk, GNU Smalltalk, я думаю, что это список имеет некоторые полномочия.

Также обратите внимание, что даже #isEmpty, по-видимому, не переносится, по крайней мере, для потоков.

+0

Хм, да, мы можем доверять Приморским разработчикам, но это было правдой в Squeak 3.X, когда ifNotNil: не принимал никаких аргументов, а ifNotNilDo: взял бы один ... Теперь я ожидал бы довольно равномерного поведения ifNil: ifNotNil: at по крайней мере, в последних версиях Squeak/Pharo/VW/stx/gst, но я слишком ленив, чтобы проверить все диалекты ... –

+0

Да, я думаю, что Squeak 4.2+, Pharo 1.4+ и Gemstone 2.4+ вполне безопасны для __специфических Сообщения. Не знаю о других диалектах, либо – Tobias

 Смежные вопросы

  • Нет связанных вопросов^_^