3

重複の可能性:
Rubyでは、垂直線は何ですか?

この質問はGoogleに対応しているようで、Rubyはわかりません。

|f|モデルの説明の行末にある異なる存在を比較すると、コンテンツが表示されなくなります。テーブル内の一部の情報へのアクセスを提供しないページのバグを修正しようとしています。

Rubyで||=何をするか」については||役に立たないようです。

壊れた.rbファイルの疑わしいコードは次のとおりです。

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

しかし、これは機能しているようで、アクティブ化すると目的のフィールドが表示されます。

comma :show_mytable do
    table2 :field2
    table3 :field3
end

|f|出力が表示されないようにすることはできますか?

4

2 に答える 2

5

コードでは、メソッドに 2 つの変数を渡していますcomma。1 つ目は呼び出されるシンボル:show_mytableで、2 つ目はブロックです。条件付き代入である ||= 構文とは無関係です。

ruby でのブロックの使用例を次に示します。

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

ループ (eachこの場合) を使用する場合、変数 ( element) を渡して、ループ内の現在の要素を参照する方法を提供できます。

次のようにdo、代わりに中括弧を使用することもできます。end

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

|f|ここでは何もループしていないので、あなたの例でが必要になる理由はわかりません。

于 2012-10-02T16:30:17.970 に答える
2

|f|ブロックのパラメーターです。この数行commaで、2 つのパラメーターで呼び出されるメソッドを呼び出します。1 つ目はシンボル:show_mytable、2 つ目はdoと の間のブロックendです。

パイプで囲まれた変数名のリストを使用して、ブロックのパラメーター リストを指定できます。ブロックは無名関数のようなもので、任意の数のパラメーターを指定して呼び出すことができ、ruby はそれらに最適な一致を試みます。

于 2012-10-02T16:28:38.490 に答える