2012-05-06 43 views

回答

1

一個我這樣在Ruby中使用lambda表達式的原因是,當我需要一個封蓋從周圍的範圍,這對於例如在小的腳本我有時會發現比周圍路過的東西作爲參數,更加方便捕捉的東西。其他人(ab)使用頂級實例變量,但我不喜歡那麼多。根據要求

更新:這裏有一個小例子:

shift_timestamp = -> ts do 
    t = Time.parse(ts.gsub(',','.')) + options[:time] 
    "#{t.strftime("%H:%M:%S")},#{t.usec.to_s[0..2]}" 
end 

這是一個小工具,我寫了移字幕。這是一個簡短的腳本,寫這種方式讓我可以關上options和訪問它的拉姆達內而無需將其傳遞正如我說的,什麼時髦,但對於小腳本我有時喜歡做這個(其中「本」解析選項,編寫1或2個使用這些選項的lambda表達式,稍後使用lambdas而不是方法)。

+0

你能給的地方,這將是有益的短的例子嗎?只是有興趣... – slhck

2

lambda表達式的一個很常見的用法是懶加載(和傳遞參數)ActiveRecord的關係,範圍:

class Post < ActiveRecord::Base 
    scope :recent, lambda { |today| where('published_at >= ?', today) } 
end 

(從here

雖然在一般,這些關閉的方法是一種對數據集合進行一次操作的簡明方式,或將代碼存儲爲數據以傳遞給其他功能。

+0

[「使用一個類的方法是接受範圍參數的首選方式。」(http://guides.rubyonrails.org/active_record_querying.html#passing-in-arguments),因此這可能不是最好的例。 –

相關問題