2012-09-15 56 views
0

可能重複:
What is the -> (stab) operator in Ruby?Ruby中的「 - >」運算符是什麼意思?

我努力學習on Rails的書對象和發現的問題,以瞭解->運營商的意思。

的代碼是:

describe Blog do 
    subject  { Blog.new(->{entries}) } 
    let(:entries) { [] } 

    it "has no entries" do 
    subject.entries.must_be_empty 
    end 

    describe "#new_entry" do 
    let(:new_post) { OpenStruct.new } 

    before do 
    subject.post_source = ->{ new_post } 
    end 

    it "returns a new post" do 
    subject.new_post.must_equal new_post 
    end 
end 

我花了很多時間去尋找它的任何文檔,但無法

+0

FWIW,這通常被稱爲「stabby拉姆達」。 –

回答

4

這是一個new syntax for lambda。你也可以把它寫這樣的:

subject.post_source = lambda { new_post } 

這裏是新版本怎麼老樣子與參數(感謝邁克爾·科爾的建議):

v_old = lambda {|a, b| a + b} 
v_new = ->(a, b) { a + b} 

v_old.call(1, 2) # => 3 
v_new.call(3, 4) # => 7 
+1

也許更新你的帖子,以顯示如何在兩個版本中使用帶有參數的lambdas。 –

+0

@MichaelKohl:好主意:) –

相關問題