为了通过一个rspec测试,我需要得到一个简单的字符串来返回" num"次数。我一直在谷歌搜索,似乎.times方法应该有所帮助。理论上我可以看到:
num = 2
string = "hello"
num.times do
string
end
......应该有用吗?但输出继续作为" 2"或其他任何" num"等于。我可以把它放到" put'你好'"两次,但它仍然返回" 2"印刷之后" hellohello"。
也试过
num.times { string }
我错过了关于.times方法的基本信息吗?或者我应该采取另一种方式?
答案 0 :(得分:3)
times将重复执行该块:string
将被解释两次,但该值不会被用于任何事情。 num.times
将返回num
。您可以在Ruby控制台中查看它:
> 2.times{ puts "hello" }
hello
hello
=> 2
你不需要循环,你需要连接:
string = "hello"
string + string
# "hellohello"
string + string + string
# "hellohellohello"
或者就像数字一样,您可以使用乘法来避免多次添加:
string * 3
# "hellohellohello"
num = 2
string * num
# "hellohello"
如果您需要包含2个string
元素的列表,可以使用:
[string] * num
# ["hello", "hello"]
或
Array.new(num) { string }
# ["hello", "hello"]
如果你想加入中间有空格的字符串:
Array.new(num, string).join(' ')
# "hello hello"
只是为了好玩,你也可以使用:
[string] * num * " "
但它可能不太可读。
答案 1 :(得分:0)
这是您正在寻找的行为吗?
def repeat(count, text)
text * count
end
repeat(2, "hello") # => "hellohello"
(没有采取措施防止输入错误)