代码之家  ›  专栏  ›  技术社区  ›  ironsand

这类缩写的名称`map{|x|x.foo}`->`map(&:foo)`[重复]

  •  0
  • ironsand  · 技术社区  · 11 年前

    如果有这样的说法 a.map{|x| x.foo} ,我可以省略 x 像这样的变量 map(&:foo) .

    我想知道这种行为是否有名字。 没有名字,我找不到其他语言中类似的行为。

    有人知道吗?

    1 回复  |  直到 11 年前
        1
  •  4
  •   Community CDub    8 年前

    它通常被称为“符号到过程”。它最初是Rails中的一个黑客,后来在Ruby中被合并和优化。

    除非其他语言也实现Ruby的Symbol类型,否则在其他语言中找不到类似的东西。符号与常量不同,但如果你想象一个常量指向一个函数,也许是其他语言中的闭包,那么你就会接近它的行为。

    " What does map(&:name) mean in Ruby? “是关于它的一个很好的讨论,以及它是如何实现的一个例子。还可以查看该页面右侧的相关帖子。

    此外,还有“ What do you call the &: operator in Ruby? ".

    推荐文章