2014-12-29 1 views
1

제목이 말하는 것. 나는 그것을 해보려고 노력했지만 구글이 내가 무엇을 찾고 있는지를 알기 위해 (특히 용어를 모르기 때문에) 약간 구사하기가 어렵다. (a Symbol 포함) key => value 구문을 사용Rails에서 값과 this => 값의 차이점은 무엇입니까?

{foo: "bar"}.keys[0].class # => Symbol 

, 키는 임의의 타입 일 수있다 :

+1

"해시 록"이라고합니다 : http://stackoverflow.com/questions/4663074/in-ruby-what-does-mean-and-how-does-it-work – August

+0

: this => : that is hashrockets라고하며 모든면에서 우월합니다 ... –

+0

답변 해 주셔서 감사합니다! 그러나이 게시물은 hashrockets와 다른 구문의 차이점을 설명하지는 않습니다. –

답변

4

key: value 구가 Hash 그대로 사용하는 경우, 키는 항상 Symbol가된다

{:foo => "bar"}.keys[0].class # => Symbol 
{1 => "bar"}.keys[0].class # => Fixnum 
+0

감사합니다. –

0

this: value은 루비 1.9.3 이후의 해시 리터럴에 대한 최신 구문입니다.

:this => value은 이전 구문입니다. 새로운 버전의 루비에서도 유효합니다.

Whats the benefit of the newer syntax?

1

은 "hashrocket"구문 => 해시 키 값의 임의의 쌍을 일치시키는 데 사용된다. 해시 키 값 쌍 :의 최신 (및 더 짧은) 구문은 기호 키에만 사용할 수 있습니다. 일반적으로 귀하의 해시에있는 모든 키가있는 경우 (또는해야한다) 문자 말하기

{:foo => bar} 

이 짧고 더 쉽게

을 읽을 때 나는 새로운 구문을 추천 할 것입니다 :
{foo: bar} 

은 동등하다

: 키의이 기호는 다음하지 않은 경우
{a: 1, b: 2} 

그러나, 나는 이전보다 유연 구문을 사용하는 것이 좋습니다 것입니다

{"what" => 3, :frequency => 4.43, kenneth => "Bob"} 
관련 문제