2016-07-26 7 views
5

formtastic Gem에서 재정의하고 싶은 방법으로 이걸 발견했습니다.인수없이`<<`(double보다 작음)은 무엇을 의미합니까?

def to_html 
    input_wrapping do 
    hidden_field_html << 
    label_with_nested_checkbox 
    end 
end 

<<가 세 번째 줄에 어떤 역할을합니까 : 방법처럼 보인다? 나는 배열과 함께하는 것을 알고 있지만 여기에는 전혀 모른다.

+0

은'hidden_field_html'는'array' 또는'string'과'label_with_nested_checkbox' 그것에 추가되고 있어야한다. 표준에 따르면 코드가 80 열을 넘지 않아야하므로 두 줄로 작성 되었기 때문일 수 있습니다. – Deep

답변

8

당신이처럼 읽을 수 있습니다

hidden_field_html << label_with_nested_checkbox 

label_with_nested_checkboxhidden_field_html의 말에 연결된되는 인수입니다 - 그들은 '명확성'

+0

4 번째 줄은 적어도 2 칸 들여 쓰기해야합니다. 적어도 그렇게 할 것입니다. –

1
  1. 에서 두 줄 이상을 분할 한 계승 계급은 <가 사용되고, <<가 아니고, 전은 일반적으로 방법 <<과는 관계가 없습니다.

  2. 루비는 들여 쓰기에 대한 높은 수준의 허용 오차를 가지고 있습니다. 거의 모든 곳에서 함수 호출과 인수 사이에 줄 바꿈을 포함하여 모든 공간을 넣을 수 있습니다.

E.의 g :

'aaa'. 
    length 
#⇒ 3 

'aaa' 
    .length 
#⇒ 3 

모두 완벽하게 유효합니다.

  1. <<은 일반적인 방법으로 모든 클래스에서 덮어 쓸 수 있습니다. 여기에 아마도 String#<< 메서드가 있는데 inplace 문자열 수신자에 대한 인수 인이 추가됩니다. 일반적

, 하나는 임의의 클래스에서이 방법을 겹쳐 쓸 수있다 :

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

아니요, 제가 말했듯이, 그들은 아마도'String # <<'을 사용할 것입니다. 수신자 클래스'puts hidden_field_html.class.to_s'를 검사하여이를 확인할 수 있습니다. – mudasobwa