Возможный дубликат:
Почему Ruby не поддерживает я ++ или я — для fixnum?
Почему в Ruby нет оператора инкремента?
например.
i++
++i
Используется ли оператор ++
для чего-то еще? Есть ли настоящая причина для этого?
Возможный дубликат:
Почему Ruby не поддерживает я ++ или я — для fixnum?
Почему в Ruby нет оператора инкремента?
например.
i++
++i
Используется ли оператор ++
для чего-то еще? Есть ли настоящая причина для этого?
Ruby не имеет оператора pre/post increment/decment. Например,
x++
илиx--
не будут разбираться. Что еще более важно,++x
или--x
ничего не сделают! Фактически, они ведут себя как несколько унарных префиксных операторов:-x == ---x == -----x ==......
Чтобы-x == ---x == -----x ==......
число, просто напишитеx += 1
.
Взято из "Вещей, которые новички должны знать Руби" (архив, зеркало)
Это объясняет это лучше, чем когда-либо.
EDIT: и причина от самого автора языка (источник):
- ++ и - НЕ зарезервированный оператор в Ruby.
- Операторы приращения/уменьшения C являются фактически скрытым назначением. Они влияют на переменные, а не на объекты. Вы не можете выполнить назначение с помощью метода. Вместо этого Ruby использует + = / - = operator.
- Я не могу быть объектом назначения. Кроме того, изменение значения целого числа 1 может вызвать серьезную путаницу во всей программе.
(1) ++ и - НЕ зарезервированы оператора в Ruby.
(2) Приращение/уменьшение C операторы на самом деле скрыты назначение. Они влияют на переменные, а не на объекты. Вы не можете выполнить назначение через метод. Ruby вместо этого использует + =/- = operator.
(3) самость не может быть целью назначение. Кроме того, изменение значение целого числа 1 может вызвать серьезную путаницу во всем программы.
matz.
Я не думаю, что нотация доступна, потому что - в отличие от PHP или C-все в Ruby - это объект.
Конечно, вы можете использовать $var=0; $var++
в PHP, но это потому, что это переменная, а не объект. Поэтому $var = new stdClass(); $var++
, вероятно, выдает ошибку.
Я не программист Ruby или RoR, поэтому я уверен, что кто-то может проверить это или исправить, если это неточно.