Подтвердить что ты не робот

Странное поведение с символом "_" (подчеркивание) в Ruby

Просто интересно.

Если вы откроете IRB и введите _, вы получите nil в качестве ответа:

irb(main):001:0> _
=> nil

И вы можете изменить его значение:

irb(main):002:0> _ = 'some value'
irb(main):003:0> _
=> "some value"

Но если вы создаете новую переменную с _, ее значение изменяется:

irb(main):004:0> foo_bar = 'other value'
irb(main):005:0> _
=> "other value"

Почему? Это дизайнерское решение?

4b9b3361

Ответ 1

irb использует _ для обозначения значения последнего вычисленного выражения. Таким образом, вы увидите, что _ изменено, даже если вы не используете его в предыдущей строке:)

Ответ 2

Внутри irb _ возвращает результат предыдущей операции. Таким образом, при открытии новой сессии irb _ будет равно нулю, поскольку предыдущей операции не было.

2.0.0p353 :001 > 4
 => 4 
2.0.0p353 :002 > 3 + _
 => 7