有人可以向我解释为什么Ruby功能很难
str.chars.map{|letter| num.times{letter.next}}
只生成数字(num
),因为这个单词中有很多字母,而不是多次向字母表中移动每个字母(.next
)。我知道这似乎很简单,但从我对.times
的理解,这是使用它的方法,但是这样的事情发生了many.times
....这是一个笑话。
答案 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}
但两者都不易读。