diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-06-22 19:05:42 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-06-22 19:07:01 +0900 |
| commit | 28de6b0da195e1ebf8f6ce30de462f44fb761b8b (patch) | |
| tree | 24de9c9612de2ea6db94ffb7c5d066e954475729 /src/hash.c | |
| parent | f94551ad40c12370770c8e743ba8b39abc430547 (diff) | |
| download | mruby-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.c | 19 |
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) |
