IT

`: key => "value"`와`key : "value"`해시 표기법 사이에 있습니까?

lottoking 2020. 7. 19. 09:05
반응형

`: key => "value"`와`key : "value"`해시 표기법 사이에 있습니까?


:key => "value"(해시 로켓)과 key: "value"(루비 1.9) 표기법 사이에 차이점이 있습니까?

않으면 오는가 key: "value"표기법 을 사용하고 싶습니다 . 변환하는 나에게 도움이되는 것으로 :x =>x:표기법은?


예, 차이가 있습니다. 약간 합법적입니다.

h = { :$in => array }
h = { :'a.b' => 'c' }
h[:s] = 42

그러나 이것들은 아닙니다 :

h = { $in: array }
h = { 'a.b': 'c' } # but this is okay in Ruby2.2+
h[s:] = 42

키로 무엇이든 사용할 수 =>있으므로 다음을 수행 할 수 있습니다.

h = { C.new => 11 }
h = { 23 => 'pancakes house?' }

그러나 당신은 할 수 없습니다 :

h = { C.new: 11 }
h = { 23: 'pancakes house?' }

JavaScript 스타일 ( key: value)은 모든 해시 키가 "간단한"기호 인 경우에만 유용합니다 (일부 일치하는 /\A[a-z_]\w*\z/iAFAIK 파서는이 키에 대해 레이블 패턴을 사용함).

:$in당신이 MongoDB를 사용하는 경우 해시 스타일을 사용하는 경우에 매치하는 경우에 MongoDB를 사용하는 경우 스타일은 스타일이 표시됩니다. 그리고 h[:k]전체 해시 ( h = { ... })가 아닌 특정 키 ( ) 키로 작업하는 경우 에도 기호에 콜론 우선 스타일을 사용해야합니다. 또한 사용하는 기호에는 선행 콜론 스타일을 사용합니다. 나는 일관성을 선호하는 JavaScript 스타일을 전혀 신경 쓰지 않습니다.

JavaScript 스타일의 일부 문제는 Ruby 2.2에서 수정되었습니다. 유효한 레이블이 아닌 기호가있는 경우 따옴표를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

h = { 'where is': 'pancakes house?', '$set': { a: 11 } }

그러나 키가 기호가 아닌 경우 여전히 해시 로켓이 필요합니다.


key: "value"Ruby 1.9의 편리한 기능입니다. 당신의 환경이 그것을 지원할 것을 아는 것을 사용하지 않습니다. 로켓보다 콜론을 입력하는 것이 훨씬 쉬우 며 훨씬 깨끗해. 파일 변환과 정규 파일을 모르는 경우 변환을 수행 할 보석이 아마도 아마도 학습 경험처럼 좋습니다.


key: valueJSON 스타일의 과제는 새로운 루비 1.9 해시 구문의 일부이 구문은 루비의 이전 버전에서는 작동하지 않는 것을 명심 그래서. 또한 키는 기호가됩니다. 이 두 가지 제약 조건으로 살 수있는 권한 새로운 해시는 이전 해시와 같이 작동합니다. 스타일을 변환 할 이유가 없습니다 (아마도 스타일 이외).


해시 로켓에 의해 할당 된 루비 해시 키는 키-값 쌍 ( 예 : . 's' => x)에 대한보다 쉬운을 용이하게 하는 반면, 기호 ( 예 : key: "value" 또는 :key => "value") 를 제한 키 할당 에는 할당 할 수 없습니다. 해시 로켓은 해시 테이블에 자유롭고 기능을 제공하지만 특히나 키로 허용 하지만 해시 테이블을 표시하여 해시 키로 구성하는 경우보다 애플리케이션 성능이 느려질 수 있습니다. 다음 리소스는 로켓과 함께 사용할 수 있습니다.


하는 :key => value[해석]하는 것과 같은 key: value것이며 실제로는 단지 편의 일뿐입니다. 을 사용하는 다른 언어는 보지 못했지만 =>Javascript와 같은 다른 언어는 key: value해시와 동등한 데이터 유형을 사용합니다 .

해시를 작성하는 방식을 변환하는 보석은 현재 프로젝트에서 수행하는 방식을 고수합니다.

* key: value를 사용 하는 경우 기호가되고 해당 키에 저장된 값에 foo해시 로 액세스하는 [해석] 여전히 유지됩니다 foo[:key].

참고 URL : https://stackoverflow.com/questions/8675206/is-there-any-difference-between-the-key-value-and-key-value-hash-no

반응형