这个方法在Ruby中的更好实现是什么

这个方法在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', '

您需要的是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', '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