首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“拒绝什么?!”是否可以通过使用更多的方法或变量来更有效地编写此代码?

“拒绝什么?!”是否可以通过使用更多的方法或变量来更有效地编写此代码?
EN

Stack Overflow用户
提问于 2014-05-13 01:11:23
回答 1查看 134关注 0票数 0

这是我第一次发布堆栈溢出,所以如果这是一个糟糕的问题,如果我错误地发布了下面的代码,我深表歉意。

我是计算机编程的新手,正在尝试使用Ruby中的.each方法来编写歌词。有一首由小约翰演唱的可笑/超赞/愚蠢的歌曲,叫做“拒绝什么?”这首歌基本上是一遍又一遍地重复同样的两句歌词。

我想看看我是否可以正确地应用Ruby中的.each方法的知识,以代码的形式重写歌词。

输出结果完全按照我想要的方式显示。然而,我确实觉得我基本上是在一遍又一遍地键入相同的行。有没有更有效的方法来做到这一点?

感谢您的帮助,如果这个问题需要不同的提问,请让我知道。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-05-13 02:00:19

由于该过程只是对给定短语执行指定次数的puts的序列,因此您可以将该序列(和重复)存储在数组中,然后迭代该数组……

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23614982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档