# \[Feature #1840\] Hash $B$KMWAGDI2C$7$F(B self $B$rJV$9%a%=%C%I(B

**URL:** <https://www.ruby-forum.com/t/feature-1840-hash-b-kmwagdi2c-7-f-b-self-b-rjv-9-a-c-i-b/172949>\
**Category:** Development\
**Created:** [July 30, 2009, 1:03pm UTC](https://www.ruby-forum.com/t/feature-1840-hash-b-kmwagdi2c-7-f-b-self-b-rjv-9-a-c-i-b/172949 "2009-07-30T13:03:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kimura\_Yoshihiro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@Kimura\_Yoshihiro](https://www.ruby-forum.com/u/Kimura_Yoshihiro)\
**Post date:** [July 30, 2009, 1:03pm UTC](https://www.ruby-forum.com/t/feature-1840-hash-b-kmwagdi2c-7-f-b-self-b-rjv-9-a-c-i-b/172949/1 "2009-07-30T13:03:59Z")

</div>

Feature #1840: Hash e$B$KMWAGDI2C$7$Fe(B self e$B$rJV$9%a%=%C%Ie(B  
[http://redmine.ruby-lang.org/issues/show/1840](http://redmine.ruby-lang.org/issues/show/1840)

e$B5/I\<\<Te(B: Kimura Yoshihiro  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Low

e$BG[Ns$+$ie(B Hash e$B$r:n$k$H$-$J$I$K!"$h$/e(B

a.inject({}) {|h, x| h[x] = …; h }

e$B$\_$?$$$K$9$k$N$O$b$O$d%$%G%#%\*%`$H8@$C$F$h$$$H;W$$$^$9$,e(B(_1)e$B!"e(B  
e$B!Ve(B; he$B!W$NItJ,$,\>/!9%_%^%8%J%$$C$]$$$N$,5$$K$J$C$F$$$^$7$?!#e(B

e$B5$$K$J$C$?$D$$$G$K8!:w$7$F$_$?$iB\>$K$b$=$N$h$&$J0U8+$rL$K$7$?$N$Ge(B(\*2)e$B!"e(B  
Hash e$B$K!VMWAGDI2C$7$Fe(B self  
e$B$rJV$9!W$h$&$J%a%=%C%I$rDI2C$9$k$3$H$re(B  
e$BDs0F$7$F$_$^$9!#e(B

e$B$$$/$D$+A\*Br;h$r9M$($F$\_$^$7$?!'e(B

1. Hash#store e$B$,e(B self e$B$rJV$9e(B  
e$B;EMM$,JQ$o$k$N$G8\_49@-$NLL$GLdBj$,=P$k$+$b$7$l$^$;$s!#e(B  
e$B$7$+$be(B h.store(x, …) e$B$@$H;zLL$,B?$/$J$k$H$$$&!#e(B  
h.store(\*v) e$B$N$h$&$K=q$1$k%1!\<%9$J$iC;$+$/$J$k$+$b$7$l$^$;$s!#e(B

2. Array#insert e$B$K9g$o$;$Fe(B Hash#insert e$B$rDI2C$9$ke(B  
[]=, store, insert e$B$H;w$?$h$&$J$N$,J#?t$“$k$N$O!”=i?4\<T$K$H$C$Fe(B  
e$BC1$K$o$+$j$K$/$$$@$1$+$b$7$l$^$;$s!#e(B

3. Hash#\<\< e$B$rDI2C$9$ke(B  
ML e$B$r8!:w$7$?$i!"e(B[ruby-list:44686] e$B$G$^$D$b$H$5$s$,!"e(B

4. Enumerable#each\_with\_object e$B$r;H$&e(B  
e$B$=$l$O$=$l$G$"$j$+$b$7$l$^$;$s!#8D?ME\*$K$O!“e(Beach  
e$B$N$D$$$G$K!De(B e$B$He(B  
e$B$$$&L\>A0$re(B object  
e$B$,M\_$7$$6ILL$G;H$&$N$O$J$s$H$J$/0cOB46$,$”$j$^$9!#e(B  
e$B;w$?L\>A0$Ne(B each\_with\_index e$B$,e(B self  
e$B$rJV$9$+$i$+$b$7$l$^$;$s!#e(B

5. e$B$=$NB\>e(B  
e$B$3$N%$%G%#%_%`$r;H$&6ILL$O!“%-!\<$N=89g$rJL$N=89g$K%^%C%T%s%0$7$??7e(B  
e$B$7$$e(B Hash e$B$,M\_$7$$!”$H$$$&%1!\<%9$@$H;W$o$l$^$9!#$=$l$re(B  
e$B!V%-!\<$N=89g$Ke(B {}e$B$re(B inject  
e$B$9$k!W$HI=8=$9$k$3$H$,!"$=$b$=$bD\>46E_$Ge(B  
e$B$J$$$H$b9M$($i$l$^$9!#e(B

e$BE83+!W$H$$$&$N$HF1MM$Ke(B

Hash  
e$B@8@.MQ$N%/%i%9%a%=%C%I$H$7$F!“Nc$($P$3$s$J$N$,$”$k$HJXMx$+$be(B  
e$B$7$l$^$;$se(B(\*3)e$B!#e(B

```
 def Hash.map(enum)
   if block_given?
     enum.inject({}) {|h, k| h[k] = yield k; h }
   else
     enum.inject({}) {|h, v| h.store(*v); h }
   end
 end

 # ex
 Hash.map(string_keys, &:size) # e$BJ8;zNse(B => 

```

e$B%5%$%:e(B  
Hash.map(values.each\_with\_index) # e$BCMe(B =\>  
e$B%$%s%G%/%9e(B  
Hash.map(other\_hash.map {|k, v| [v, k] }) # e$BCMe(B =\> e$B%-!\<e(B

e$BB\>$NJ}$N0U8+$d%“%$%G%”$bJ9$$$F$\_$?$$$G$9!#e(B

(_1)  
Google Code Search e$B$G!Ve(Blang:“ruby”  
inject({}).+;\s_\w+\s\*}e$B!We(B  
e$B$H$d$C$?$ie(B 2,000 e$B7o%R%C%H$7$^$7$?!#e(B

(\*2)  
[はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知](http://subtech.g.hatena.ne.jp/cho45/20071128/1196239612) e$B$H$+e(B  
[あたりまえだったんだけど、ちょっとがっかりしてしまったこと - takkan\_mのNo planな日常](http://d.hatena.ne.jp/takkan_m/20071212/1197466247) e$B$H$+e(B  
[http://wota.jp/ac/?date=20081025#p09](http://wota.jp/ac/?date=20081025#p09) e$B$H$+e(B  
e$BK?e(Bche$B$H$+e(B

(\*3)  
e$B2a5n!"K?e(Bche$B$K;w$?$h$&$J$N$r=q$-$3$s$@$N$O;d$G$9e(B

---

<div class="post-metadata">

**Author:** ![Kimura\_Yoshihiro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/f4b2a3/32.png) [@Kimura\_Yoshihiro](https://www.ruby-forum.com/u/Kimura_Yoshihiro)\
**Post date:** [July 30, 2009, 7:36pm UTC](https://www.ruby-forum.com/t/feature-1840-hash-b-kmwagdi2c-7-f-b-self-b-rjv-9-a-c-i-b/172949/2 "2009-07-30T19:36:16Z")

</div>

Kimura Yoshihiro ã•ã‚“ã¯æ›¸ãã¾ã—ãŸ:

> ä»–ã®æ–¹ã®æ„è¦‹ã‚„ã‚¢ã‚¤ãƒ‡ã‚¢ã‚‚èžã„ã¦ã¿ãŸã„ã§ã™ã€‚

å€‹äººçš„ã«ã¯Hash#updateã¨ã‹ãŒå¥½ã¿ã§ã™ãŒã€ãƒ¡ã‚¸ãƒ£ãƒ¼ã˜ã‚ƒãªã„ã®ã‹ãªã€‚
