2012-10-02 68 views
1

可能重複:
In Ruby, what are the vertical lines?什麼| f |在Ruby中做?

這個問題似乎是谷歌,防潮,我不知道紅寶石。

比較|f|在模型描述中行尾的不同存在會導致內容不被顯示。我只是試圖修復一個頁面中的錯誤,該錯誤不能訪問表中的某些信息。

What does ||= do in Ruby」關於||似乎沒有幫助。

下面是從破碎的.rb文件中的可疑代碼:

comma :show_mytable do |f| 
    table2 :field2 
    table3 :field3 
end 

但這似乎工作,呈現出啓動時所需的字段:

comma :show_mytable do 
    table2 :field2 
    table3 :field3 
end 

|f|防止顯示輸出?

+1

| f |是從組逗號取得每個實例的變量,除非您在do..end循環中使用它,否則它不會做任何更改。例如,如果您需要訪問特定的逗號實例的屬性值,則可以使用f.attributename,其他明智的| f |沒有區別。我也是新來的鐵軌,我認爲有比這更多的東西.. – user1455116

+1

可以使用SymbolHound而不是谷歌進行這種搜索:http://symbolhound.com/?q=Ruby+%7Cf%7C – philant

回答

5

在您的代碼中,您將兩個變量傳遞給comma方法。第一個是名爲:show_mytable的符號,第二個是塊。它與條件賦值|| =語法無關。

下面是如何塊紅寶石中使用的示例:

array = [1, 2, 3, 4] 
array.each do |element| 
    element + 1 
end 
    #=> 2 3 4 5 

當使用循環(each在這種情況下),則可以將它傳遞一個變量(element)以便爲用戶的方式來引用循環中的當前元素。

您還可以使用大括號代替doend這樣的:

array = [1, 2, 3, 4] 
array.each { |e| e + 1 } 
    #=> 2 3 4 5 

既然你不通過任何循環在這裏我看不出有任何理由,你可以需要在你的例子中|f|

2

|f|是您的塊的參數。用這幾行你可以用兩個參數調用叫做comma的方法。第一個是符號:show_mytable,第二個是您在doend之間的區塊。

使用管道之間的變量名列表,您可以指定塊的參數列表。一個塊就像一個匿名函數,它可以用任意數量的參數調用,ruby會盡量與它們匹配。