没有参数的`<<`(双小于)是什么意思?
What does the `<<` (double less than) mean without an argument?
我在一个我想在 formtastic Gem 中覆盖的方法中找到了这个。该方法如下所示:
def to_html
input_wrapping do
hidden_field_html <<
label_with_nested_checkbox
end
end
第三行的<<
是做什么的?我知道它对数组有什么作用,但在这里我不知道。
您可以这样阅读:
hidden_field_html << label_with_nested_checkbox
label_with_nested_checkbox
是连接到 hidden_field_html
末尾的参数 - 他们将其分成两行 'clarity'
在class继承中使用了<
,而不是<<
,前者一般与方法<<
无关。
Ruby 对 space 缩进有很高的容忍度;几乎所有地方都可以在函数调用和参数之间放置任意数量的 space,包括换行符。
E. g.:
'aaa'.
length
#⇒ 3
和
'aaa'
.length
#⇒ 3
两者都完全有效。
<<
是通用方法,可能会在任何 class 中被覆盖。这里应该是 String#<<
方法,即 将参数附加 到字符串接收器。
一般来说,可以任意覆盖此方法class:
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
我在一个我想在 formtastic Gem 中覆盖的方法中找到了这个。该方法如下所示:
def to_html
input_wrapping do
hidden_field_html <<
label_with_nested_checkbox
end
end
第三行的<<
是做什么的?我知道它对数组有什么作用,但在这里我不知道。
您可以这样阅读:
hidden_field_html << label_with_nested_checkbox
label_with_nested_checkbox
是连接到 hidden_field_html
末尾的参数 - 他们将其分成两行 'clarity'
在class继承中使用了
<
,而不是<<
,前者一般与方法<<
无关。Ruby 对 space 缩进有很高的容忍度;几乎所有地方都可以在函数调用和参数之间放置任意数量的 space,包括换行符。
E. g.:
'aaa'.
length
#⇒ 3
和
'aaa'
.length
#⇒ 3
两者都完全有效。
<<
是通用方法,可能会在任何 class 中被覆盖。这里应该是String#<<
方法,即 将参数附加 到字符串接收器。
一般来说,可以任意覆盖此方法class:
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