#ruby #operators #increment #post-increment
#ruby #операторы #увеличивать #последующее увеличение
Вопрос:
Ruby не поддерживает увеличивающие переменные, такие как variable
. Я видел такое поведение, которое:
2 4
выдает 6
. Фактически, любое количество
знаков между двумя переменными обрабатывается как один
. Как ruby справляется с этим? И поскольку ruby это делает, можно ли это считать причиной недоступности
оператора?
Комментарии:
1.
2 - 4
также работает … по какой-то причине2. @MxyL: Это потому, что это
2 (-4)
так, что вы получаете унарный-
оператор (ОН ЖЕ-@
метод).3. 2 — 4 !! понял бы работу, если бы я это сделал ! 🙂
Ответ №1:
Это:
2 4
анализируется как:
2 ( 4)
итак, второй
— это унарный плюс. Добавление дополнительных плюсов просто добавляет больше унарных
операторов, поэтому:
2 4
рассматривается как:
2 ( ( ( ( ( ( 4))))))
Если вы предоставите свой @
метод в Fixnum
:
class Fixnum
def @
puts 'unary '
self
end
end
тогда вы даже можете увидеть, как это происходит:
> 2 4
unary
=> 6
Комментарии:
1. Что-то не так с переопределяющим фрагментом кода? у меня не работает.
2. Ты хочешь сказать
2 4
или2 4
? Ruby чувствителен к пробелам. Вы также заметите, что4
не будет вызываться@
, синтаксический анализатор сам преобразует это как раз4
перед тем, как метод получит возможность быть вызванным.3. Какая версия Ruby и как вы проверяете?
4. 1.8.7 . Заходим в irb и используем там ваш код.
5. У меня даже нет версии 1.8.7, возможно, вам следует использовать более новый Ruby.
Ответ №2:
Вместо используйте = Пример: a = 2 a = 3 помещает a
5
Комментарии:
1. Да, но почему работает ? Или если уж на то пошло. Обратите внимание, что вы могли бы даже сказать
8 ---------- 3
, и это все еще допустимая операция2. Известно, что работает =. Я просто хотел узнать тайну множественных плюсов. 🙂