3

値なしでハッシュにキーを追加することは可能ですか? だから私はハッシュ(@j)を作成し、メソッドを持っています:

def add(hash)
@j.merge!(hash) 
end

値なしでキーを追加できるようにするにはどうすればよいですか、例

@j.add('fish')
puts @j.entries
puts @j.keywords

=> {'fish' => nil}
=> fish

私の現在のコードでは、次のようにキーと値を追加できます。

 @j.add('fish' => 'animal') 

しかし、上記のような場合はそうではありません....キーのみ

4

5 に答える 5

3

値に nil を使用してハッシュを追加できます。

@j.add {:key => nil}

または add メソッドを編集します。

def add(key_or_hash)
  hash = key_or_hash.is_a?(Hash) ? key_or_hash : {key_or_hash.to_sym => nil}
  @j.merge! hash
end
于 2013-02-13T06:30:10.820 に答える
0

次のように、キーをnil値に設定できます。

h = Hash.new

h["nil_key"] = nil

h.keys # => ["nil_key"]

in your example you could define it like this

def add(key, value = nil)
  h = { key => value } 
  @j.merge!(h)
end

@j = { :a_key => "a_value" }

@j.add("fish")

@j.keys # => [:a_key, "fish"]

@j.add("another_key", "another_value")

@j.keys # => [:a_key, "fish", "another_key"]

@j # => [ :a_key => "a_value", "fish" => nil, "another_key" => "another_value"]

just make sure you define #add in whatever class the @j instance variable is defined in.

于 2013-02-14T07:49:03.930 に答える
-1

ハッシュは、キーから値へのマッピングです。値のないキーを持つという考えは、不可能であるだけでなく、意味がありません。

于 2013-02-13T11:41:14.527 に答える