我有此代码:
name = "Jordan"
def upper(string)
string.upcase
end
def lower(string)
string.downcase
end
def random_name
["Ollie", "Ana"].sample
end
def random_case(string)
[upper(string), lower(string)].sample
end
# Please write your code between this line...
# ... and this line
puts "My name is #{random_both()}"
我需要编写最简单的代码来返回其中一个
"`My name is ollie`" or
"`My name is OLLIE`" or
"`My name is ANA`" or
"`My name is ana
我尝试过:
def random_both
random_name + random_case
end
def random_both
random_name.swapcase
end
random_both = random_name + random_case
我需要编写最简单的代码来返回其中一个
"`My name is ollie`" or
"`My name is OLLIE`" or
"`My name is ANA`" or
"`My name is ana`"
答案 0 :(得分:3)
这里不修改任何代码的最小解决方案是将一个结果作为另一个的参数:
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")}"