将 lambda 应用于对象

Apply lambda to an object

假设我在某处定义了一个变量和 lambda

phone = "1(234)567-89-01"
lambda = -> { gsub(/[^0-9]/, '') }

如何将 lambda 应用于 phone 以获得 12345678901

P.S。我知道我可以采用以下方法:

lambda = -> (arg) { arg.gsub(/[^0-9]/, '') }
lambda.call(phone)
#=> "12345678901"

但我想简洁一点。

您可以使用 BasicObject#instance_exec:

phone.instance_exec &lambda
#=> "12345678901"