Каков “наилучший практический” переносимый способ использования символов в Smalltalk?
-
22-09-2019 - |
Вопрос
Каковы правила "наилучшей практики" для использования символов в Smalltalk переносимым способом?В основном я использую squeak и pharo, и я знаю, что они оба допускают, чтобы 'foo' = #foo и #foo = 'foo' были истинными, в то время как другие Smalltalks этого не делают.Я понимаю, что символы предназначены для идентификации и не должны использоваться вместо строк.Но, по крайней мере, безопасно ли предполагать, что объект symbol представляет собой коллекцию, которой можно отправлять сообщения типа copyWith:или сделайте:, или вы должны сначала преобразовать это в какую-то коллекцию?
Буду признателен за любой совет.
Решение
Правило, которому мы следуем в Seaside, заключается в том, чтобы не смешивать Символы и Строки.Таким образом, вы избегаете проблемы.Не на всех платформах символ является подклассом String , поэтому вы должны быть осторожны с #copyWith:или #сделать:.
Я использую символы только как дешевый жетон, который вы сравниваете с другими символами.Я бы не стал использовать символы ни для чего другого.