2012-04-04 4 views
88

잘 언급 된 RIP Hash rocket post은 Hash Rocket 구문 (:foo => "bar")이 new-to-Ruby JSON 스타일 해시 (foo: "bar")를 사용하지 않으려는 것 같지만 해시 로켓을 나타내는 최종 참조를 찾을 수 없습니다. 양식은 실제로 Ruby 1.9부터는 더 이상 사용되지 않거나 권고되지 않습니다.Hash Rocket은 더 이상 사용되지 않습니까?

+0

나는 그 사람이 레일즈에서만 루비를 사용한다고 생각한다. –

답변

119

이 블로그 게시물의 저자는 =>stillquitenecessary이다, 지나치게 극적이고 어리석은되고 있습니다. 특히 :

  1. 당신은 인용 필요 심볼 로켓을 사용해야합니다 :'where.is' => x은 유효하지만 가 없습니다. Ruby 2.2에서는이 문제를 해결하여 Ruby 2.2 이상에서 이라고 말할 수 있습니다.
  2. 유효 라벨이 아닌 기호에는 로켓을 사용해야합니다 : :$set => x은 유효하지만 $set: x은 유효하지 않습니다. Ruby 2.2 이상에서는 따옴표로이 문제를 해결할 수 있습니다. '$set': x은 올바른 일을합니다.
  3. 해시에서 기호가 아닌 키를 사용하는 경우 로켓을 사용해야합니다. 's' => x은 유효하지만 's': x은 완전히 다른 것입니다.

당신은 물론 명백한 방식으로 위의 주위에 kludge 수 있습니다

h = { } 
h[:'where.is'] = 'pancakes house?' 
# etc. 

하지만 그건 그냥 못생긴 불필요한입니다.

로켓은 Ruby 's Hashes를 손상시키지 않으면 서 어디에도 가지 않습니다.

+4

/지나치게 극적이고 어리석은/극적이고 웅변적인 경의를 표하는 옹호자. 나머지 점은 의미합니다. – dbenhur

+0

동의합니다. 확실히 언어 업데이트에 대한 가장 훌륭한 소식 중 하나입니다. 약간의 오해의 소지가 있음에도 불구하고 : D. – mahemoff

+13

새로운 구문을 사용하는 경우 특정 시나리오에 대해 이전 구문을 계속 사용해야 할 때 코드가 복잡해질 수 있습니다. –