非常简短的问题:是否可以在Ruby中使用Symbol#to_proc速记(例如lambda(&:upcase)
和stabby lambda语法?例如,我可以这样说:
p = lambda &:upcase
在Proc
中获取p
,但我找不到使用->
的等效内容。这样:
p = -> &:upcase
当然不起作用。
答案 0 :(得分:1)
显然,它不受支持。
我认为这与proc
和lambda
实际上是方法而不是关键字这一事实有关。它们支持我们通常与each
关联的相同功能以及Enumerable
模块中的其他方法。但是,->
是一种特殊的语言结构,可以单独解析。
我想不出为什么像-> &:method
这样的东西不可能的原因,但到目前为止,Ruby语言的语法根本不允许它。