【问题标题】:Railstutorial (Michael Hartl): Exercise 4.6Railstutorial (Michael Hartl):练习 4.6
【发布时间】:2012-10-12 22:18:30
【问题描述】:

我没有从 Hartl 的 Rails 教程中得到以下练习的答案:

通过将清单 4.10 中的问号替换为适当的 方法,结合 split、shuffle 和 join 来编写一个函数 随机播放给定字符串中的字母。

清单 4.10:

>> def string_shuffle(s)
>>   s.split('').?.?
>> end
=> nil
>> string_shuffle("foobar")

有人可以帮帮我吗?

提前非常感谢!

【问题讨论】:

  • 使用这种方法,您不能完全随机播放给定的字符串。实际上,您正在返回一个新字符串,原始字符串的字母被打乱了。

标签: ruby-on-rails ruby syntax methods split


【解决方案1】:

我认为像你说的那样添加 shuffle 和 join 应该可以工作:

def string_shuffle(s)
  s.split('').shuffle.join('')
end

这些方法从左到右起作用。 split('') 将单词 (s) 拆分为一组单独的字母。然后随机播放它们。而 join('') 将拆分反转,并将其重新放入一个单词中。

编辑澄清: ('') 是两个单引号,而不是一个双引号。如果您执行 split("") 和 join(""),它也应该可以工作,因为您只是尝试拆分和连接每个字符。

【讨论】:

  • 好的。并以真正的价值观工作?在哪里放置“puts s”或类似的东西?在哪里声明值?
  • ruby 中的方法会返回最后一行,所以会返回字符串。你可以只说“puts string_shuffle(s)”,然后你会打印出洗牌的字符串。但是,正如评论中重写的那样,您实际上是在返回一个新字符串,其中原始字符串的字母被打乱了。在大多数情况下,这基本上可以满足您的需求。唯一的情况是,如果您定义一个变量并对其进行洗牌,那么该变量仍将保持其原始值。在这种情况下,您需要执行以下操作: s = "word" s = string_shuffle(s)
  • @christophe 一旦你定义了string_shuffle 方法,你可以将它称为string_shuffle("foobar")。每次调用它都会给出不同的输出。祝 RailsTutorial 书好运。稍后请查看rubykoans.com(推荐在同一部分的末尾)以提高您的红宝石技能。
  • 感谢您的示范!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多