Как ruby выполняет оператор ?

#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. Известно, что работает =. Я просто хотел узнать тайну множественных плюсов. 🙂