我正在尝试编写一个方法,该方法将接受两个参数,一个用于字符串,另一个用于重复的次数。这是我的代码:
def repeat(text,c=2)
c.times do print text end
end
repeat ("hi")
这里的问题是,我希望结果是“你好” 我试过“推”,但这开始了新的一行...... [打印文字“+”文字]不起作用......
感谢您的帮助!
答案 0 :(得分:14)
你的问题不清楚。如果您只想重复打印n次文本,请使用String#*
def repeat(text, n=2)
print text * n
end
您的示例结果显示您希望"hi hi"
暗示您希望每次重复之间都有空格。最简洁的方法是使用Array#*
def repeat(text, n=2)
print [text] * n * ' '
end
答案 1 :(得分:4)
或者你可以这样做:
def repeat(text, c=2)
print c.times.collect { text }.join(' ')
end
答案 2 :(得分:4)
Enumerator#cycle
返回一个枚举器:
puts ['hi'].cycle(3).to_a.join(' ')
# => hi hi hi
分解代码:
['hi']
创建一个包含字符串
cycle(3)
从数组中创建一个重复元素3次的枚举器
.to_a
从枚举器创建一个数组,以便join
Array
方法可以创建最终输出字符串。
答案 3 :(得分:1)
我是ruby的新手,但我觉得这个解决方案对我有用,我自己想出来了。
def repeat(word, i=2)
word + (" #{word}" * (i-1))
end
答案 4 :(得分:1)
只需将字符串乘以数字,Ruby就足够聪明地知道您的意思了;)
pry(main)> "abcabcabc" * 3
=> "abcabcabcabcabcabcabcabcabc"
答案 5 :(得分:0)
你可以试试这个:
def repeat(text, c=2)
print ((text + ' ')*c).strip
end
答案 6 :(得分:0)
def repeat(text, c=2)
print ([text]*c).join(' ')
end
也许更容易阅读。除非,有没有理由使用.collect方法呢?
答案 7 :(得分:0)
我没有看到创建数组(有或没有collect())然后调用join()的重点。这也有效:
def repeat(text, c=2)
c.times { |i| print text; print ' ' unless i+1 == c }
end
虽然,它有点冗长(可以说是非红宝石)但它的工作量较少(这可能更有意义)。
答案 8 :(得分:0)
def repeat(text, c=2)
print Array.new(c, text).join(' ')
end