Ruby 中的身份方法工厂

sch*_*jos 2 ruby ruby-stdlib

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

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

def some_method(x, y, decorator = ->(x) { x })
  …
end
Run Code Online (Sandbox Code Playgroud)

改写成看起来有点像

def some_method(x, y, decorator = method(:itself))
  …
end
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*ord 5

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

array.map(&:upcase)
Run Code Online (Sandbox Code Playgroud)

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

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

def some_method(x, y, decorator = :itself.to_proc)
  # ...
end
Run Code Online (Sandbox Code Playgroud)