作者:陈翔_是学长 | 来源:互联网 | 2022-12-12 15:49
在两种情况下,我没有获得一致的输出:
场景1:
humen = {"hand" => 1, "eye" => 2, "head" => 3, "hair"=>4}
puts "enter any body part name"
internal = gets.chomp.downcase.to_s
body = humen[internal]
puts body
#if input is "eye", it comes out 2
场景2:
humen = {hand:1, eye:2, head:3, hair:4}
puts "enter any body part name"
internal = gets.chomp.downcase.to_s
body = humen[internal]
puts body
我在irb控制台中看不到任何东西.任何人都可以解释为什么会这样吗?
1> kiddorails..:
钥匙是第二种情况下的符号 -
{:hand=>1, :eye=>2, :head=>3, :hair=>4}
而是internal
一个字符串.
humen[internal]
期望分配给内部的字符串出现在散列中humen
,而不是这种情况.
:hand != 'hand'
您应该将字符串转换为符号:
humen[internal.to_sym]
String#to_sym
将字符串转换为符号.