2011-01-11 8 views
32

Ruby를 배우는 동안 때때로 "=>"연산자를 발견했습니다. 보통 나는Ruby에서 "=>"의미는 무엇이며 어떻게 작동합니까?

:symbol => value 

의 형태에서 볼과 함수에 값을 전달할 때 자주 사용되는을 보인다. 그 운영자는 정확히 무엇이라고 부릅니까? 그것은 무엇을 의미합니까? Ruby에 내장되어 있습니까? 아니면 Rails 및 DataMapper와 같은 다른 프레임 워크가 심볼 클래스에 추가되는 것입니까? 심볼 클래스와 함께 만 사용됩니까? 감사.

답변

39

=>은 해시 맵 리터럴의 값에서 키를 분리합니다. 그것은 과부하가 가능하지 않고 심볼과 특별히 연결되지 않습니다.

해시 맵 리터럴의 형식은 {key1 => value1, key2 => value2, ...}이지만 함수의 마지막 매개 변수로 사용되는 경우 중괄호를 생략 할 수 있습니다. 따라서 f(:a => 1, :b => 2)과 같은 함수 호출을 볼 때 하나의 인수를 사용하여 :a:b 및 값이 12 인 해시 맵을 호출하면 f이 호출됩니다.

+0

자세한 내용은 Pickaxe [해시에 대한 자습서] (http://phrogz.net/ProgrammingRuby/frameset.html?content=http://phrogz.net/ProgrammingRuby/tut_containers.html%23hashes) 및 [해시에 대한 참조 섹션] (http://phrogz.net/ProgrammingRuby/frameset.html?content=http://phrogz.net/ProgrammingRuby/language.html%23hashes). Ruby 1에서 주목하십시오.9 대신에'foo : bar'와 같은 해시에서 리터럴 키/값 쌍을 지정할 수 있습니다.이 쌍은 키를 심볼': foo'로 생성합니다. – Phrogz

+0

큰 문제를 작은 문제로 분해하십시오. 연관 배열과 루비 기호를 알게되면 해시를 이해하는 데 문제가 없습니다. => 사실 필요한 : 제목, 문자열, : – karatedog

+0

그래서 그냥 명확히하기 위해, 여기 재산 DataMapper 에서 예입니다 길이 => 5..200 이 같은 재산 (수 있습니다 : 제목, 문자열, {: required => true, : length => 5..200}) ? –

11

"해시 로켓"이라고하는이 연산자는 루비 해시를 정의 할 때 사용한다는 것을 알 수 있습니다. 당신 키로 기호를 사용 해시를 정의하는 경우 루비 1.9, 사용할 수있는 대체 문법이 당신에게 지금이 있다는 http://www.ruby-doc.org/core/classes/Hash.html

참고 :이 익숙하지 않다면

은 루비 해시 문서입니다 : http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax

+0

+1에 1.9 구문. –

4

당신이 더 인터넷 검색을 수행 할 경우, =>은 (<=> 우주선처럼 보이는 것과 같은 의미에서) 로켓처럼 보이기 때문에 때로는 hashrocket라고하며이 해시에 사용됩니다.

또는 SymbolHound을 사용할 수 있습니다.

+0

잘 알고 있습니다. Google에서 정보 검색을 위해 꽤 많이 검색했지만 아무데도 없습니다. 팁 고마워. –

+0

@DustinMartin 다른 구문을 찾는 데 어려움이있을 때를 대비하여 최근에 SymbolHound라는 검색 엔진을 발견했습니다. –

4

팁 :

또한
{ 
    a: "A", 
    b: "B" 
} 
+0

작전. 그냥 위에서 언급 한 것으로 나타났습니다 :) – amrnt

0

In Ruby what does "=>" mean and how does it work?에 :

당신은 대부분 것입니다 루비 1.9, {:a => "A", :b => "B"} 같은 해시를 사용하는 경우, 당신은 JSON 해시처럼 사용할 수 있습니다 함수에 대한 매개 변수를 정의하려면 =>을 참조하십시오. 이것을 좋은 편리함으로 생각하십시오. 모든 매개 변수가 거대한 해시로 래핑되므로 매개 변수의 올바른 순서를 기억할 필요가 없습니다. 당신이

link_to "My link", my_path, :confirm => "Are you sure?"

같은 간단한 도우미 메서드가 있다면 그래서 당신은 거의 사용되지 않는 매개 변수를 사용하려는 이유만으로

link_to "My link", my_path, null, null, null, null, "Are you sure?"

보다 훨씬 낫다. 따라서 해시를 매개 변수로 전달하는 것은 Ruby/Rails의 관습에 불과합니다.

관련 문제