为什么。时间很难 - Ruby

时间:2016-06-28 18:15:39

标签: ruby ruby-on-rails-3 methods

有人可以向我解释为什么Ruby功能很难

str.chars.map{|letter| num.times{letter.next}}

只生成数字(num),因为这个单词中有很多字母,而不是多次向字母表中移动每个字母(.next)。我知道这似乎很简单,但从我对.times的理解,这是使用它的方法,但是这样的事情发生了many.times ....这是一个笑话。

3 个答案:

答案 0 :(得分:1)

num.times返回num的值。您应该使用以下内容:

str.chars.map{|letter| num.times{ letter = letter.next }; letter }

答案 1 :(得分:0)

是的我做了类似

的事情
def caesar_up(string, n)
  string.chars.map { |char| (char.ord + n).chr }.join
end

然后像caesar_up("MOM", 2)一样使用它来获取"OQO"

答案 2 :(得分:0)

> 'abc'.chars.map{|c| c.tap { 3.times{c.next!} } }.join
=> "def"

或者

3.times.inject(letter){|a,_| a.next}

但两者都不易读。