Ruby 将lambda应用于对象
假设我在某个地方定义了一个变量和lambdaRuby 将lambda应用于对象,ruby,lambda,metaprogramming,Ruby,Lambda,Metaprogramming,假设我在某个地方定义了一个变量和lambda phone = "1(234)567-89-01" lambda = -> { gsub(/[^0-9]/, '') } 如何将lambda应用于手机以获取12345678901 另外,我知道我可以采用以下方法: lambda = -> (arg) { arg.gsub(/[^0-9]/, '') } lambda.call(phone) #=> "12345678901" 但我希望简洁。您可以使用: ->(arg){arg}是
phone = "1(234)567-89-01"
lambda = -> { gsub(/[^0-9]/, '') }
如何将lambda应用于手机以获取12345678901
另外,我知道我可以采用以下方法:
lambda = -> (arg) { arg.gsub(/[^0-9]/, '') }
lambda.call(phone)
#=> "12345678901"
但我希望简洁。您可以使用:
->(arg){arg}
是更好的好东西@AndreyDeineko,好的是它不会改变原来的手机的状态(在exec之后,手机变量仍然是“1(234)567-89-01”
)。。。因此,为了使用新值:new\u phone=phone.instance\u exec(&lambda)
phone.instance_exec &lambda
#=> "12345678901"