Я думаю, что вы застряли на этом:
- Когда происходит обратное?
- Что присваивается переменной
idea
?
Ключевым моментом является то, что все справа происходит до назначения. Так что если вы связываете несколько методов справа, то то, что присваивается, является конечным результатом цепочки.
Поиграйте с ним немного в irb
и посмотрите:
>> input = gets.chomp.reverse
fooboo
=> "ooboof"
>> input = gets.chomp.reverse.upcase
fooboo
=> "OOBOOF"
Что также может сбить вас с толку, так это то, что строковый метод Ruby reverse
возвращает обратную строку, но на самом деле он не меняет строку, к которой он обращен. Чтобы изменить саму строку, как уже говорили другие, вам нужен метод reverse!
. Это закономерность в языке. (Это может быть getcha, и есть другие подобные ошибки в других языках. Например, sort @array
в Perl возвращает обратный массив, но не меняет порядок @array
.)