[解決済み] key => "value"`と`key: "value"`のハッシュ表記に違いはありますか?
質問
の違いは何ですか?
:key => "value"
(hashrocket)と
key: "value"
(Ruby 1.9)記法と同じですか?
もしそうでなければ、私は
key: "value"
という表記にしたいです。からの変換を手助けするgemはありますか?
: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
) は、Hash のキーがすべて "simple" シンボルである場合のみ有効です (多かれ少なかれ、以下のものにマッチします。
/\A[a-z_]\w*\z/i
にマッチするもので、AFAIKではパーサーはこれらのキーのためにラベルパターンを使用します)。
は
:$in
のスタイル記号は MongoDB を使うときに結構出てくるので、MongoDB を使っていると Hash のスタイルが混ざってしまうことになります。また、Hash の特定のキーを扱うことがあれば (
h[:k]
) の特定のキーを扱う場合、ハッシュ全体ではなく (
h = { ... }
) を使用する場合でも、記号にはコロンファーストのスタイルを使用しなければなりません。また、Hash 以外で使用する記号にはリーディングコロンのスタイルを使用しなければなりません。私は一貫性を保つことを好むので、JavaScriptのスタイルに悩まされることはまったくありません。
JavaScript スタイルの問題のいくつかは Ruby 2.2 で修正されました。例えば、有効なラベルでないシンボルがある場合、引用符を使うことができるようになりました。
h = { 'where is': 'pancakes house?', '$set': { a: 11 } }
しかし、キーがシンボルでない場合はまだhashrocketが必要です。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] ハッシュ化アルゴリズムと暗号化アルゴリズムの根本的な違い
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み] Rubyのmapとcollectの違い?
-
[解決済み] Ruby、execとsystemと%x()またはBackticksの違いについて
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】pythonのforループで、`continue`と`pass`の違いはあるのでしょうか?
-
[解決済み] Ruby: selfを拡張する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyでシングルクォートとダブルクォートを使い分けるとパフォーマンスが上がりますか?
-
[解決済み] レスキューVSシドキック?[クローズド]
-
[解決済み] Rubyの文字列の中から"˶‾‾‾˵"を削除するにはどうしたらいいですか?
-
[解決済み] Rubyの継承とミキシンの比較
-
[解決済み] 現在の日時をDD/MM/YYYY HH:MM形式で取得するにはどうすればよいですか?
-
[解決済み] rvm use 2.0.0 --default を実行すると、"Warning! PATH is not properly set up" と表示される。
-
[解決済み] Rubyで空のファイルを作成する:"touch "と同等?
-
[解決済み] 文字列を正規表現に変換する ruby
-
[解決済み] Rubyでjavaのインターフェースに相当するものは何ですか?
-
[解決済み] rubyのinjectはreduceと同じ意味ですか?