programing

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

newstyles 2023. 6. 8. 19:25

":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/i파서는 이러한 키에 대해 레이블 패턴을 사용합니다.

:$in스타일 기호는 MongoDB를 사용할 때 공정하게 표시되므로 MongoDB를 사용할 경우 해시 스타일을 혼합하게 됩니다.그리고, 만약 당신이 해시의 특정 키로 작업을 한다면,h[:k]전체 해시보다 ()h = { ... }), 기호에는 콜론 우선 스타일을 사용해야 하며 해시 외부에서 사용하는 기호에는 선행 콜론 스타일을 사용해야 합니다.저는 자바스크립트 스타일을 전혀 신경쓰지 않기 위해 일관성 있는 것을 선호합니다.

JavaScript 스타일의 문제 중 일부는 Ruby 2.2에서 해결되었습니다.올바른 레이블이 아닌 기호가 있는 경우 따옴표를 사용할 수 있습니다. 예:

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

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

key: "value"Ruby 1.9의 편리한 기능입니다. 사용자의 환경이 이 기능을 지원할 것이라는 것을 알고 있는 한 사용하지 않을 이유가 없습니다.대장을 입력하는 것이 로켓보다 훨씬 쉽고, 훨씬 깨끗해 보인다고 생각합니다.변환을 할 보석이 있다는 것에 대해서는, 아마도 그렇지 않을 것입니다. 하지만 파일 조작과 정규 표현을 아직 모른다면, 그것은 당신에게 이상적인 학습 경험인 것 같습니다.

해시-로켓에 의해 할당된 루비 해시 키는 키-값 쌍을 위한 문자열을 용이하게 할 수 있습니다(예:'s' => x기호를 통한 키 할당(예: key: "value"또는:key => "value"문자열로 할당할 수 없습니다.해시-로켓은 특히 문자열을 키로 허용하는 해시 테이블에 대한 자유와 기능을 제공하지만, 해시 테이블이 해시 키로 기호를 사용하여 구성되는 경우보다 응용 프로그램 성능이 느릴 수 있습니다.다음 리소스는 해시 로켓과 기호의 차이를 명확히 할 수 있습니다.

key: valueJSON 1구문의 이므로 이 의 RubyJSON과 . JSON은 Ruby 1.9와 호환되지 않습니다.또한, 열쇠는 상징이 될 것입니다.만약 당신이 이 두 가지 제약 조건을 가지고 살 수 있다면, 새로운 해시는 오래된 해시와 똑같이 작동합니다. 그것들을 변환할 이유는 (아마도 스타일 외에는) 없습니다.

하고있다:key => value▁doing같을 하는 것과 같습니다.key: value그리고 그것은 정말 단지 편의일 뿐입니다.나는 다른 언어를 사용하는 것을 본 적이 없습니다.=>하지만 자바스크립트와 같은 다른 사람들은 그것을 사용합니다.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