2016-11-23 38 views
9

让说我有一个变量和lambda定义某处应用拉姆达一些对象

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

如何申请拉姆达到手机上得到12345678901

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

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

但我想要简洁。

+0

' - >(ARG){arg}里'最好 – fl00r

回答

14

您可以使用BasicObject#instance_exec

phone.instance_exec &lambda 
#=> "12345678901" 
+3

好东西@AndreyDeineko,以及有关这样做的好处是,它不会改变原来的'电话的状态'(在exec之后,手机变量仍然是'“1(234)567-89-01”')...所以为了使用新的值:'new_phone = phone.instance_exec(&lambda)'' – equivalent8