我发现这个方法在 formtastic Gem 中,我想覆盖它。该方法如下:
def to_html
input_wrapping do
hidden_field_html <<
label_with_nested_checkbox
end
end
第三行的
<<
做什么用?我知道它在数组中的作用,但是在这里我不知道。我发现这个方法在 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
末尾的参数 - 他们将其拆分成两行以增加“清晰度”。在类继承中使用的是<
而不是<<
,前者通常与方法<<
无关。
Ruby对空格缩进有很高的容忍度;几乎可以在函数调用和参数之间放置任意数量的空格,包括换行符。
例如:
'aaa'.
length
#⇒ 3
并且
'aaa'
.length
#⇒ 3
两者都是完全有效的。
<<
是通用方法,可以在任何类中被覆盖。这里应该是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
<<
方法?谢谢! :) - BergrebellString#<<
。您可以通过检查接收器类来验证此操作:puts hidden_field_html.class.to_s
。 - Aleksei Matiushkin
hidden_field_html
应该是一个array
或string
,并且label_with_nested_checkbox
被添加到其中。标准规定您的代码不应超过80列,因此可能是由于这个原因它被写成了两行。 - Deepesh