我取一个字符串并将其拆分然后将地图链接起来。我希望任何长度为5个字母或更大字母的单词都会反转。
如果我这样做
str.split(' ').map { |word| word}
它将返回一个包含所有单词的数组。
如果我这样做
str.split(' ').map { |word| words; word.reverse if word.length >= 5 }
所有我回来的都是颠倒的话。那我怎么能两个都做?
旁注 - 我试图理解如何正确使用积木,虽然我取得了一些进展,但我仍然不能完全流利。
答案 0 :(得分:6)
这个怎么样?
str.split.map { |word| word.length >= 5 ? word.reverse : word }
答案 1 :(得分:2)
str.split.map { |word| word.tap { |w| w.reverse! if w.length >= 5 } }
在单词上使用Object#tap
我们总是会返回一个单词,而当它足够长时,它会被 inplace 反转。
您的方法失败,因为postfix if
意味着在条件不满足时返回nil
。