Почему я не получаю такой же вывод в Ruby - PullRequest
0 голосов
/ 26 июня 2018

Я не получаю согласованный вывод в двух случаях:

Сценарий 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 Ответ

0 голосов
/ 26 июня 2018

клавиши являются символом во втором регистре -

{:hand=>1, :eye=>2, :head=>3, :hair=>4}

, тогда как internal - это строка . humen[internal] ожидает, что строка, присвоенная внутреннему, будет присутствовать в хэше humen, что не соответствует действительности.

:hand != 'hand'

Вы должны преобразовать строку в символ следующим образом:

humen[internal.to_sym]

String#to_sym преобразует строку в символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...