2016-07-26 3 views
5

私はこれをformtastic Gemでオーバーライドしたい方法で見つけました。引数なしの `<<`(doubleより小さい)の意味は何ですか?

def to_html 
    input_wrapping do 
    hidden_field_html << 
    label_with_nested_checkbox 
    end 
end 

<<は、3行目に何をするん:メソッドは次のようになりますか?私は配列で何をしているのか知っていますが、ここで私は分かりません。

+0

は 'hidden_​​field_html'は' array'または 'STRING'と' label_with_nested_checkbox'がそれに追加されなければなりません。標準では、コードが80列を超えてはならないとしているので、2行で記述されている可能性があります。 – Deep

答えて

8

あなたはこのようにそれを読むことができます:

hidden_field_html << label_with_nested_checkbox 

label_with_nested_checkboxhidden_field_htmlの終わりに連結された引数である - 彼らはで

+0

4行目は2スペース分インデントする必要があります。 –

1
  1. 「明確性」の2行にそれを分割しましたクラス継承は、<<ではなく、<が使用され、前者はメソッド<<とはまったく関係ありません。

  2. Rubyは、スペースインデントの許容度が高い。ほとんどの場合、関数呼び出しと引数の間に改行を含む任意の量のスペースを置くことができます。

大腸菌G .:

'aaa'. 
    length 
#⇒ 3 

'aaa' 
    .length 
#⇒ 3 

は両方完全に有効です。

  1. <<は、どのクラスでも上書きされる一般的な方法です。ここにはString#<<メソッドがあり、の埋め込み先はという文字列受信者の引数です。一般に

は、一つは、任意のクラスでこのメソッドを上書きする可能性がある:

class A 
    attr_accessor :var 
    def initialize 
    @var = 5 
    end 
    def << value 
    @var += value 
    end 
end 

a = A.new 
a.var 
#⇒ 5 
a << 37 
a.var 
#⇒ 42 
+0

彼らはカスタム '<<"メソッドを使用していますか?ありがとう! :) –

+1

いいえ、私が言ったように、彼らはおそらく 'ストリング#<< 'を使用します。これは、受信者クラス 'puts hidden_​​field_html.class.to_s'を調べることで確認できます。 – mudasobwa

関連する問題