2012-03-12 27 views
0

完全なプログラミングの初心者は何かを明確にしようとしていますが、私はハッシュのキーを作成していました。ここに私の推測があった。ハッシュを削除するときに[]の代わりにa()を使用するのはなぜですか?

hash["key"].­delete 
hash.dele­te["key"] 

私は最終的にそれを見て、私は()を使用すると仮定だ:

hash.dele­te("key") 

私はハッシュを作成するために[ ]を使用しているので、なぜ私はそれを使用していないだろうキーを削除するには?また、なぜhash("key").deleteは機能しませんか?

答えて

10

[] is actually a method of Hashであり、パラメータが[]の間になるように特別に処理されます。標準のメソッド構文を使用するstoreに相当します。

同様に、1つの引数を取るdelete is also a methodhash.delete['foo']を実行すると、(引数のない)deleteを呼び出してから、返される内容に応じて[]を呼び出しようとしています。 hash['foo'].deleteを実行すると、hash['foo']に格納されているものがすべてdeleteになります。

+1

: 'HSHの【:キー]' HSH 'と同じである[]。(:キー)は'、同様に 'HSHの【:キー] = 42'はHSH 'と同様です[] =。 (:キー、42) 'それを試してみてください! –

+0

@JörgWMittag私は正直なところ、動作することを期待していましたが、文法上の砂糖を試してみるのは気にしませんでした。しかし、Rubyにはこのような文法的な特殊ケースがたくさんあります。 –

2

hash.delete()はメソッドです。ここで、hash []は砂糖構文です(ただし、まだメソッドです)。一貫性が必要な場合は、hash.store(key、value)を使用できます。 BTW

hash[:key] = :value 
hash.store(:key, :value) 
hash.delete(:key) 
+0

あなたは正しいです。それを私が直した。 – christianblais

関連する問題