Ruby中的身份方法工厂

Ruby 中是否有接收简单返回其参数的 lambda 的快捷方式?

我正在尝试具有以下功能:

def some_method(x, y, decorator = ->(x) { x })
  …
end

改写成看起来有点像

def some_method(x, y, decorator = method(:itself))
  …
end

也许有一种方法可以改变接收器Object#itself

回答

您可能在 ruby​​ 中多次看到这样的代码:

array.map(&:upcase)

那么,&:upcase实际上是什么意思?它实际上是在调用Symbol#to_proc.

因此,您可以选择这样定义方法:

def some_method(x, y, decorator = :itself.to_proc)
  # ...
end


以上是Ruby中的身份方法工厂的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>