Другие ответы дают достаточные решения, но я хотел бы поделиться , почему это происходит с вами. Вы были близки, но есть небольшой нюанс в том, что upcase! работает, что не интуитивно понятно
У вашего исходного кода есть:
upper = my_name.upcase
Метод my_name.upcase
получает ваш ввод Jordan
, преобразует его (как и ожидалось) и назначает его переменной upper
.
Но у вас также была эта строка:
my_name = upper.upcase!
Что эквивалентно "JORDAN".upcase!
(потому что первый вызов upcase
уже расшифровал текст для вас. В соответствии с документами ruby, на которые я ссылался выше, этот метод возвращает nil
, если не было внесено никаких изменений Так как вы уже добавили слово, никаких изменений не произойдет, поэтому он возвращает nil
Вы можете использовать одно из решений в других, или просто удалить вторую строку, где вы звоните upcase!
Это все, что вам действительно нужно сделать:
def my_name(name)
name.upcase
end