誰かがハッシュにキーが存在するかどうかをチェックし、デフォルト値を与えない場合はルビーの方法で表示できますか?私はこれをしない限り、1つのライナーがあると仮定しているが、私は何を使用するか分からない。あなたはハッシュにそのデフォルト値を格納する必要がない場合はキーが存在しない場合デフォルト値を作成
29
A
答えて
11
あなたはHash#fetch
メソッドを使用することができます。
hash = {}
hash.fetch(:some_key, 'default-value') # => 'default-value'
p hash
# => {}
あなたはデフォルト値あなたは存在しないキーにアクセスするたびに格納するほかに必要がある場合は、あなた「あなたはブロックでHash#new
を使用してそれを行うことができ、ハッシュを初期化するものを再:
hash = Hash.new { |hash, key| hash[key] = 'default-value' }
hash[:a] = 'foo'
p hash[:b]
# => 'default-value'
p hash
# => { :a => 'foo', :b => 'default-value' }
15
ハッシュクラスのコンストラクタデフォルト値を受け入れ一致するキーが見つからない場合、同じことが返されます。
h.fetch(key, "default value")
それとも、非既存のキーがnil
が返されるという事実活用:あなたはすでにハッシュを持っている場合は
h = Hash.new("default")
h.has_key?("jake")
=> false
h["jake"]
=> "default"
h["jake"] = "26"
h.has_key?("jake")
=> true
43
、あなたはこれを行うことができます
h[key] || "default value"
作成するにはあなたが正確にやりたいことに依存するデフォルト値でハッシュします。
キーの独立して保存されることはありません。キーに依存
h = Hash.new("foo") h[1] #=> "foo" h #=> {}
と保存されます。
h = Hash.new { |h, k| h[k] = k * k } h[2] #=> 4 h #=> {2=>4}
3
デフォルト値を保存している場合それはゼロになる可能性があり、保存時に計算する必要があります:
hash = {}
...
hash.fetch(key) {|k| hash[k] = calc_default()}
1
あなたは鍵が(まだ)存在しない場合は、ハッシュにデフォルト値を割り当てたい場合は、あなたが||=
演算子を使用することができ、すなわち:
h = {some_key: 'non_default_value'}
value = h[:some_key] ||= 'default_value'
value2 = h[:non_existing_key] ||= 'default_value'
value
は'non_default_value'
とvalue2
意志が割り当てられます
h
後
'default_value'
'default_value'
からnon_existing_key
セットを持っていますが割り当てられ
{:some_key=>"non_default_value", :non_existing_key=>"default_value"}
関連する問題
- 1. Django URL - 値が存在しない場合のデフォルト値
- 2. 値が存在しない場合の空白ノードの作成
- 3. ノードが存在しない場合のデフォルト値の適用
- 4. 列挙型が存在しない場合のデフォルト値
- 5. Angular JSが存在しない場合、デフォルトで段落を作成します。
- 6. 値がない場合にキーを作成しない辞書
- 7. MySQLエラー番号150作成外キーが存在しない場合
- 8. 入力が存在しない場合にタイムラベルを作成
- 9. Powershellが存在しない場合にフォルダを作成する
- 10. ServiceBusトピックがまだ存在しない場合に作成
- 11. Postgresデータベースが存在しない場合は作成
- 12. SQLストアドプロシージャがSQLサーバーに存在しない場合は作成
- 13. データベースが存在しない場合は作成
- 14. プランが存在しない場合の作成方法
- 15. ファイルが存在しない場合にのみ作成する
- 16. PHP mysqlデータベースが存在しない場合は作成する
- 17. DBインデックスが存在しない場合に作成する
- 18. EFコアデータベース行が存在しない場合に作成する
- 19. フォルダが存在しない場合は作成する
- 20. インデックスが存在しない場合のインデックスの作成
- 21. Python ConfigParser - ファイルが存在しない場合の作成
- 22. oracleに列が存在しない場合のデフォルト値を選択
- 23. GNUスクリーン接続が存在する場合、作成しない場合は
- 24. デフォルトが存在しない場合のfallback background-image
- 25. キーが存在しない場合は、キーを取得するか、デフォルトに設定します。
- 26. mysqldump - 存在しない場合はテーブルを作成します。
- 27. 存在しない場合はエントリを作成します
- 28. LFTP - 存在しない場合はディレクトリを作成します。
- 29. ファイルが存在しない場合は、存在しない場合
- 30. scala - 変更可能なマップを作成し、キーが存在しない場合はデフォルト値(0,0)を使用します。
h [key] ||を使用すると、 "デフォルト値"は保存されていませんが、すでにそこにfalseがある場合はオーバーライドされます – Sebastian
そのため、私はそれをいくつかの可能性の1つとして挙げました。一般的に、ブール値を保存しないことがわかっている場合、ハッシュの値がどのようなものになるかという考えが人々にあります。これは完璧な方法です。 –