Минимальное решение здесь без изменения любого кода состоит в том, чтобы передать результат одного в качестве аргумента другому:
def random_both
random_case(random_name)
end
Это один из базовых принципов программирования: объединение вызовов методов.
Может быть, ты усложняешь это. В Ruby есть динамическая диспетчеризация методов, которая делает это довольно тривиальным, если вы используете send
и выбираете метод, который хотите использовать случайным образом:
def random_case(str)
str.send([ :upcase, :downcase ].sample)
end
Тогда вы называете это так:
puts "My name is #{random_case("Ollie")}"
Объедините это со случайным именем:
puts "My name is #{random_case([ "Ollie", "Ana" ].sample)}"
Это много кода на Ruby, который нужно вставить в некоторую интерполяцию строк. Есть способ сделать это более кратким, используя переменные аргументы :
def random_case(*list)
list.sample.send([ :upcase, :downcase ].sample)
end
Где теперь метод принимает ноль или более аргументов, так что теперь вы можете сделать:
puts "My name is #{random_case("Ollie", "Ana")}"