Rubyã®Hashãšã¯ïŒHashã®æŠèŠãšåºæ¬æäœã解説
Rubyã®Hashã«ã€ããŠãæŠèŠãé åãšã®äœ¿ãåããåæåãèŠçŽ ã®ååŸæ¹æ³ãšãã£ãåºæ¬çãªäœ¿ãæ¹ããèŠçŽ æ°ã®ååŸãªã©ã«äœ¿ããé »åºã®ã¡ãœãããªã©ã解説ããŠãããŸããRubyã®åå¿è ã§ããããããããããã³ãŒãäŸãšåãããŠè§£èª¬ããŠããã®ã§ãã²ãäžèªãã ãããRubyãåŠç¿ããéã«ç»å ŽããHashïŒããã·ã¥ïŒãšããæŠå¿µãä»åã¯ãã®Hashã«ã€ããŠãæŠèŠãäœ¿ãæ¹ãé åãšã®éããªã©ãå®éã®ã³ãŒããšããããŠè§£èª¬ããŠãããŸããHashã¯Rubyã§ããã°ã©ãã³ã°ãããéã«ã¯å¿ é ãšãã£ãŠããã»ã©æ§ã ãªå Žé¢ã§äœ¿çšãããŸãã
ãã®èšäºãèªãã§Hashã«ã€ããŠã®ç¥èããã²èº«ã«ã€ããŠãã ããã
Rubyã®Hashã«ã€ããŠ
ãŸãã¯HashïŒããã·ã¥ïŒãšã¯ã©ã®ãããªæŠå¿µãªã®ããšããããšã説æããŠãããŸãã
Hashã¯é£æ³é
åãšãåŒã°ãããã®åã®ãšããé
åã«äŒŒãæŠå¿µã§ãã
é åãšã®éã
Hashãé
åãšåãããã«è€æ°ã®èŠçŽ ãæ ŒçŽããããã«äœ¿çšããŸãã
é
åãšã®éãã§ãããé
åãèŠçŽ ãæå®ããã®ã«ã0ãããå§ãŸãã€ã³ããã¯ã¹ã䜿çšããã®ã«å¯ŸããHashã¯ã€ã³ããã¯ã¹ã«ãããŒããšåŒã°ããä»»æã®æååãæå®ããŠãããªã¥ãŒããšåŒã°ããèŠçŽ ãæå®ããŸãã
Rubyã®Hashã®åºæ¬
ãŸãã¯Hashã®åºæ¬çãªäœ¿ãæ¹ãèŠãªãããããŒãããããªã¥ãŒããçè§£ããŠãããŸãããã
Hashã®äœæ
Hashã¯ä»¥äžã®ããã«äœæããŸãã
飿³é åå = {ããŒå1 => ããªã¥ãŒ1, ããŒå2 => ããªã¥ãŒ2, ããŒå3 => ããªã¥ãŒ3}
ã©ãããããšãªã®ããäŸã䜿ã£ãŠã¿ãŠã¿ãŸãããã
HashãäœæããèŠçŽ ãååŸããŠã¿ãŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
print menu["ãã©ã"]
åºåçµæ:
  300å
ãã®ããã«ãHashã§ã¯ã€ã³ããã¯ã¹ãçªå·ã§ã¯ãªãæå®ããããŒãšãªã£ãŠããŸããèŠçŽ ãååŸããéããããŒãæå®ããããšã§ã»ããã«ãªã£ãŠããå€(ããªã¥ãŒ)ãååŸããŸãã
Hashã¯ä»åã®äŸã®ããã«ããŒãšããªã¥ãŒãé¢é£ä»ããããšãã«éåžžã«æçšã§ãã
èŠçŽ ã®ååŸ
Hashããã®èŠçŽ ã®ååŸæ¹æ³ã¯ããã€ããããŸãããäžçªã¹ã¿ã³ããŒããªæ¹æ³ãã
Hashå[ååŸãããèŠçŽ ã®ããŒ]
ã§åãåºãæ¹æ³ã§ãã
以äžã®ã³ãŒãã§ã¯ããmenuããšããHashããããã©ãããšããããŒã®èŠçŽ ãååŸããŠããŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
print menu["ãã©ã"]
åºåçµæ:
  300å
èŠçŽ ã®è¿œå
次ã¯Hashã«èŠçŽ ãæ°ãã«è¿œå ããæ¹æ³ã§ãã
Hashå[æ°ããããŒ] = æ°ããããªã¥ãŒ
ãšãã圢åŒã§èŠçŽ ã远å ã§ããŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
p menu
menu["ãã°"] = "600å"
p menu
åºåçµæ:
{"ãã©ã"=>"300å", "ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å"}
{"ãã©ã"=>"300å", "ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å", "ãã°"=>"600å"}
èŠçŽ ã®æŽæ°
Hashã®èŠçŽ ãæŽæ°ããããšãã¯æŽæ°ãããèŠçŽ ã®ããŒãæå®ãæ°ããªå€ãä»£å ¥ããŸãã
Hashå[æŽæ°ãããèŠçŽ ã®ããŒ] =å€
以äžã®ã³ãŒãã§ã¯ããŒåããã©ããã®å€ãæŽæ°ããŠããŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
p menu
menu["ãã©ã"] = "600å"
p menu
åºåçµæ:
{"ãã©ã"=>"300å", "ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å"}
{"ãã©ã"=>"600å", "ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å"}
èŠçŽ ã®åé€
èŠçŽ ãåé€ããã«ã¯deleteã¡ãœããã䜿çšããŸãã
Hashå.delete(åé€ãããèŠçŽ ã®ããŒ)
以äžã®ã³ãŒãã§ã¯ããŒåããã©ããã®èŠçŽ ãåé€ããŠããŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
p menu
menu.delete("ãã©ã")
p menu
åºåçµæ:
{"ãã©ã"=>"300å", "ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å"}
{"ã©ãŒã¡ã³"=>"500å", "ãã¹ã¿"=>"800å"}
Rubyã®Hashã§ãã䜿ãã¡ãœãã
Rubyã«ã¯ãäžèšã§ç޹ä»ããŠããã¡ãœãã以å€ã«ãHashãæäœããããã«ããã€ãã®ã¡ãœãããçšæãããŠããŸããä»åã¯ãã®äžã§ã䜿ãããããšã®å€ãã¡ãœããã玹ä»ããŸãã
eachã¡ãœããïŒHashã®èŠçŽ æ°ã ããããã¯ãç¹°ãè¿ãå®è¡
eachã¡ãœããã䜿ãããšã§Hashã®èŠçŽ ã®æ°ãšåãåæ°æå®ããåŠçãç¹°ãè¿ãããšãã§ããŸãã
ãããå©çšããããšã§ãHashã®èŠçŽ ãé çªã«è¡šç€ºãããªã©ã®åŠçãå¯èœã§ãã
eachã¡ãœããã¯ä»¥äžã®ãããªäœãã«ãªã£ãŠããŸãã
é
åå.each do |ãããã¯ãã©ã¡ãŒã¿|
ç¹°ãè¿ãããåŠç
end
ããã ãã§ã¯ãããã¥ããã®ã§ãmenuã®ãã¹ãŠã®èŠçŽ ïŒããŒãšããªã¥ãŒïŒãé çªã«è¡šç€ºãããšããã³ãŒããäŸã«èª¬æããŸãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
menu.each{
|name, price|
p "#{name}ã¯#{price}ã§ãã"
}
åºåçµæ:
ãã©ãã¯300åã§ãã
ã©ãŒã¡ã³ã¯500åã§ãã
ãã¹ã¿ã¯800åã§ãã
ãããã¯ã®åŒæ°ã«ã¯ããŒãšããªã¥ãŒã«å¯Ÿå¿ããä»»æã®å€æ°åãæå®ããŸãã
ä»åã¯ããŒã®åŒæ°ããnameããããªã¥ãŒã®åŒæ°ããpriceããšããŠããŸãããã®ãããã¯åŒæ°ã«Hashã®èŠçŽ ãé çªã«å
¥ã£ãŠãããšèããŠãã ããã
1åšç®ã¯ããã©ããããnameããã300åãããpriceãã«ä»£å
¥ãããŸãã2åšç®ã¯ãã©ãŒã¡ã³ãããnameããã500åãããpriceãã«ä»£å
¥ãããããšããåŠçãé
åã®èŠçŽ æ°åç¹°ãè¿ããŸãã
lengthã¡ãœããïŒHashã®èŠçŽ æ°ã調ã¹ã
Hashã®èŠçŽ æ°ã調ã¹ãã«ã¯lengthã¡ãœããã䜿ããŸããlengthã¡ãœããã¯Hashã®èŠçŽ æ°ãæŽæ°ã§è¿ããŸãã
Hashå.length
䜿çšäŸã¯ä»¥äžã®éãã§ãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
p menu.length
åºåçµæ:
3
empty?ã¡ãœããïŒHashã空ãã調ã¹ã
Hashã空(èŠçŽ æ°0)ãã©ããã¯empty?ã¡ãœããã䜿ã£ãŠèª¿ã¹ãããšãã§ããŸãã
empty?ã¡ãœããã¯Hashã空ã§ããã°trueã1ã€ä»¥äžã®èŠçŽ ãããã°falseãè¿ããŸãã
Hashå.empty?
䜿çšäŸã¯ä»¥äžã®éãã§ãã
menu = {"ãã©ã" => "300å", "ã©ãŒã¡ã³" => "500å", "ãã¹ã¿" => "800å"}
p menu.empty?
åºåçµæ:
false
ãŸãšã
ä»åã¯Rubyã®Hashã«ã€ããŠè§£èª¬ããŠããŸããã
Hashã¯é
åã®ããã«è€æ°ã®èŠçŽ ãæ±ãããšãã§ããããŒãšããªã¥ãŒãé¢é£ä»ããããšãã«éåžžã«æçšã§ãã
Rubyã§ããã°ã©ãã³ã°ããããªãéã«Hashã¯å¿
ããšèšã£ãŠããã»ã©äœ¿çšããããšã«ãªãã®ã§ããã²äœ¿ãããªããããã«ãªããŸãããã












