这是我第一次发布堆栈溢出,所以如果这是一个糟糕的问题,如果我错误地发布了下面的代码,我深表歉意。
我是计算机编程的新手,正在尝试使用Ruby中的.each方法来编写歌词。有一首由小约翰演唱的可笑/超赞/愚蠢的歌曲,叫做“拒绝什么?”这首歌基本上是一遍又一遍地重复同样的两句歌词。
我想看看我是否可以正确地应用Ruby中的.each方法的知识,以代码的形式重写歌词。
输出结果完全按照我想要的方式显示。然而,我确实觉得我基本上是在一遍又一遍地键入相同的行。有没有更有效的方法来做到这一点?
感谢您的帮助,如果这个问题需要不同的提问,请让我知道。
def turn_down_for_what
puts ""
fire_up = "Fire up, your loud, another round of shots!"
chorus = "Turn down for what!!!"
puts ""
puts fire_up
puts ""
4.times do
puts chorus
end
puts ""
puts fire_up
puts ""
4.times do
puts chorus
end
puts ""
3.times do
puts fire_up
end
10.times do
puts "Shots! "
end
puts ""
4.times do
puts chorus
end
end
turn_down_for_what发布于 2014-05-13 02:00:19
由于该过程只是对给定短语执行指定次数的puts的序列,因此您可以将该序列(和重复)存储在数组中,然后迭代该数组……
def turn_down_for_what
fire_up = "Fire up, your loud, another round of shots!"
chorus = "Turn down for what!!!"
song = [[''], [fire_up], [''], [chorus, 4],
[''], [fire_up], [''], [chorus, 4],
[''], [fire_up, 3], ["Shots!", 10],
[''], [chorus, 4]]
song.each {|line| (line[1]||1).times {puts line[0]}}
end
turn_down_for_what它是一个数组数组,每个子数组的第一个元素是要放入的行,第二个元素是次数。请注意,如果没有指定次数,我们假设1 (line[1] || 1表示第二个元素,如果第二个元素为nil,则为整数1。
https://stackoverflow.com/questions/23614982
复制相似问题