什么`<<`(双倍小于)意味着没有参数?

时间:2016-07-26 08:00:10

标签: ruby-on-rails ruby formtastic

我在一个我想在形式上的Gem中覆盖的方法中找到了这个。该方法如下:

def to_html
  input_wrapping do
    hidden_field_html <<
    label_with_nested_checkbox
  end
end

<<在第三行上做了什么?我知道它对Arrays的作用,但在这里我不知道。

2 个答案:

答案 0 :(得分:8)

你可以这样读:

hidden_field_html << label_with_nested_checkbox

label_with_nested_checkbox是连接到hidden_field_html末尾的参数 - 他们已经将它分成两行,以便明确&#39;

答案 1 :(得分:1)

  1. 在类继承中使用了<,而不是<<,前者与方法<<无关。

  2. Ruby对空间缩进具有高度的容忍度;几乎在任何地方都可以在函数调用和它的参数之间放置任意数量的空格,包括换行符。

  3. 电子。 G:

    'aaa'.
      length
    #⇒ 3
    

    'aaa'
      .length
    #⇒ 3
    

    完全有效。

    1. <<是通用方法,可能会在任何类中被覆盖。这里应该是String#<<方法, inplace将参数附加到字符串接收器。
    2. 通常,可以在任意类中覆盖此方法:

      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