Нет оператора инкремента (++) в Ruby?

Возможный дубликат:
Почему Ruby не поддерживает я ++ или я — для fixnum?

Почему в Ruby нет оператора инкремента?

например.

i++
++i

Используется ли оператор ++ для чего-то еще? Есть ли настоящая причина для этого?

Ответ 1

Ruby не имеет оператора pre/post increment/decment. Например, x++ или x-- не будут разбираться. Что еще более важно, ++x или --x ничего не сделают! Фактически, они ведут себя как несколько унарных префиксных операторов: -x == ---x == -----x ==...... Чтобы -x == ---x == -----x ==...... число, просто напишите x += 1.

Взято из "Вещей, которые новички должны знать Руби" (архив, зеркало)

Это объясняет это лучше, чем когда-либо.

EDIT: и причина от самого автора языка (источник):

  1. ++ и - НЕ зарезервированный оператор в Ruby.
  2. Операторы приращения/уменьшения C являются фактически скрытым назначением. Они влияют на переменные, а не на объекты. Вы не можете выполнить назначение с помощью метода. Вместо этого Ruby использует + = / - = operator.
  3. Я не могу быть объектом назначения. Кроме того, изменение значения целого числа 1 может вызвать серьезную путаницу во всей программе.

Ответ 2

Из размещения по Matz:

(1) ++ и - НЕ зарезервированы оператора в Ruby.

(2) Приращение/уменьшение C операторы на самом деле скрыты назначение.       Они влияют на переменные, а не на объекты. Вы не можете выполнить       назначение через метод. Ruby вместо этого использует + =/- = operator.

(3) самость не может быть целью назначение. Кроме того, изменение       значение целого числа 1 может вызвать серьезную путаницу во всем       программы.

                      matz.

Ответ 3

Я не думаю, что нотация доступна, потому что - в отличие от PHP или C-все в Ruby - это объект.

Конечно, вы можете использовать $var=0; $var++ в PHP, но это потому, что это переменная, а не объект. Поэтому $var = new stdClass(); $var++, вероятно, выдает ошибку.

Я не программист Ruby или RoR, поэтому я уверен, что кто-то может проверить это или исправить, если это неточно.