这个方法在Ruby中的更好实现是什么
您需要的是Enumerable中的方法:这个方法在Ruby中的更好实现是什么,ruby,Ruby,您需要的是Enumerable中的方法: def search_and_sort (words, num) words.map{|a| a if a.split("").sort.join == num.split("").sort.join}.compact end def combine_anagrams(words) words.map{|a| search_and_sort(words, a)}.uniq end p combine_anagrams(['cars', '
def search_and_sort (words, num)
words.map{|a| a if a.split("").sort.join == num.split("").sort.join}.compact
end
def combine_anagrams(words)
words.map{|a| search_and_sort(words, a)}.uniq
end
p combine_anagrams(['cars', 'for', 'potatoes', 'racs', 'four', 'scar', 'creams', 'scream'] )
#==>[["cars", "racs", "scar"], ["for"], ["potatoes"], ["four"], ["creams", "scream"]]
这种方法使按任意标准对事物进行分组变得非常容易 简单的“请改进我的代码”类型的帖子,没有潜在的问题,更适合。+1。我会写
words.group_by{w|w.chars.sort.join}.values
,但这只是个人偏好。@MarkThomas除非绝对必要,否则我会尽量避免使用一行。在代码审查中审核要容易得多。@tadman我不同意。end.values
读取不好。当链接方法时,我更喜欢括号形式的块。我的意见是一致的这只是一系列的意见,很多是好的,有些是有问题的,这就是为什么它经常被人提出的原因<代码>结束。值可能看起来很奇怪,但对于有C背景的人来说,}。值
。Ruby中的一些东西从定义上来说很奇怪,但你会习惯的。
def combine_anagrams(words)
words.group_by do |word|
word.chars.sort.join
end.values
end