Smalltalk Возвращение Приоритета - PullRequest
4 голосов
/ 19 июня 2011

Я бы хотел немного разъяснить приоритет возврата заявление, которое, кажется, идет вразрез с общим приоритетом правила.

Например, выражение

^ 2 + 3. 

возвращает 5 (это то, что я хочу), но не должно возвращать только 2, поскольку унарные операторы из которых ^ имеет более высокий приоритет над +, который является двоичным?.

Ответы [ 3 ]

10 голосов
/ 19 июня 2011

В Smalltalk нет «унарных операторов». Существует только 3 уровня приоритета: унарные сообщения («сообщение получателя»), бинарные операторы («получатель + аргумент») и n-арные сообщения с ключевыми словами («сообщение получателя: аргумент1»). Во всех случаях получатель приходит первым.

Таким образом, «^» не является оператором, но указывает оператор возврата. Точно так же в «-4» «-» - это не оператор, а часть литерала числа.

3 голосов
/ 19 июня 2011

Символ возврата ^ - это одна из немногих встроенных в язык конструкций.Smalltalk вернет значение выражения, следующего за символом ^.

1 голос
/ 19 июня 2011

Является ли Smalltalk оператором вообще?Я думаю, это скорее зарезервированный символ.А что должно произойти с «болтающимися» + 3 тогда, когда вернется окружающий метод?Я думаю, что поведение правильное, поскольку оператор return является последним оператором, встречающимся в «обычном» методе Smalltalk.

С уважением

...