Ruby和map的这种组合在Ruby中有什么作用?

时间:2016-05-06 12:38:38

标签: ruby

我在学习Ruby时解决了代码问题上的一些问题。我用更多的C ++方式解决了这个one(我还是Ruby的新手)

然后我来检查基于upvotes的最佳解决方案,即:

def unique_in_order(iterable)
  (iterable.is_a?(String) ? iterable.chars : iterable).chunk { |x| x }.map(&:first)
end

我不知道(&:first)是什么。我知道当我跑步时,地图的作用是什么:

[1, 2, 3, 4, 4, 5].chunk {|x| x}.map(&:first)

删除重复的元素。

1 个答案:

答案 0 :(得分:3)

根据docschunk枚举项目,根据块的返回值将它们组合在一起:

[1, 2, 3, 4, 4, 5].chunk {|x| x}.to_a
=> [[1, [1]],
    [2, [2]],
    [3, [3]], 
    [4, [4, 4]],
    [5, [5]]]

然后您只选择每个子阵列的第一个元素:

[1, 2, 3, 4, 4, 5].chunk {|x| x}.map(&:first)
=> [1, 2, 3, 4, 5]

map(&:first)只是map {|e| e.first}

的快捷方式