将 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"
假设我在某处定义了一个变量和 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"