summaryrefslogtreecommitdiffhomepage
path: root/src/hash.c
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-06-22 19:05:42 +0900
committerKOBAYASHI Shuji <[email protected]>2019-06-22 19:07:01 +0900
commit28de6b0da195e1ebf8f6ce30de462f44fb761b8b (patch)
tree24de9c9612de2ea6db94ffb7c5d066e954475729 /src/hash.c
parentf94551ad40c12370770c8e743ba8b39abc430547 (diff)
downloadmruby-28de6b0da195e1ebf8f6ce30de462f44fb761b8b.tar.gz
mruby-28de6b0da195e1ebf8f6ce30de462f44fb761b8b.zip
Refine `Hash#rehash` example [ci skip]
Previous example doesn't work because string key (frozen) can't be modified.
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/hash.c b/src/hash.c
index a9367a426..b4d96251c 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -1378,10 +1378,21 @@ mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2)
* values of key objects have changed since they were inserted, this
* method will reindex <i>hsh</i>.
*
- * h = {"AAA" => "b"}
- * h.keys[0].chop!
- * h.rehash #=> {"AA"=>"b"}
- * h["AA"] #=> "b"
+ * keys = (1..17).map{|n| [n]}
+ * k = keys[0]
+ * h = {}
+ * keys.each{|key| h[key] = key[0]}
+ * h #=> { [1]=> 1, [2]=> 2, [3]=> 3, [4]=> 4, [5]=> 5, [6]=> 6, [7]=> 7,
+ * [8]=> 8, [9]=> 9,[10]=>10,[11]=>11,[12]=>12,[13]=>13,[14]=>14,
+ * [15]=>15,[16]=>16,[17]=>17}
+ * h[k] #=> 1
+ * k[0] = keys.size + 1
+ * h #=> {[18]=> 1, [2]=> 2, [3]=> 3, [4]=> 4, [5]=> 5, [6]=> 6, [7]=> 7,
+ * [8]=> 8, [9]=> 9,[10]=>10,[11]=>11,[12]=>12,[13]=>13,[14]=>14,
+ * [15]=>15,[16]=>16,[17]=>17}
+ * h[k] #=> nil
+ * h.rehash
+ * h[k] #=> 1
*/
static mrb_value
mrb_hash_rehash(mrb_state *mrb, mrb_value self)