Re[6]: Насколько важен синтаксис языка?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.06 07:22
Оценка: 4 (1)
Здравствуйте, VladD2, Вы писали:

Д>>>и почему нельзя использовать ее с привычным С-style синтаксисом?


ANS>>можно. У java слишком большой синтаксический оверхед, а в C#2 всё нормально для этого.


VD>Ну, так и в чем дело? Чем тогда C# 2.0 хуже?


Я забыл упомянуть про такую фичу ST-блоков как нелокальный возврат (non-local return). Её несколько раз упоминали в этом форуме, но внимание особо не заостряли. Этой фичи нет ни в C#2, ни в java. То есть "с привычным С-синтаксисом" — можно, но по сути в C#2 — нельзя.

Рассмотрим уже привычный нам пример:

aValue := aDictionary at: aKey ifAbsent: [return nil].
... тут идёт, при котором aValue всегда имеет корректное значение ...


Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён. То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён. Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.