2016-11-23 62 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