调用哈希值时如何将变量设置为键?

泰姬陵

当用户输入“hit”时,他们会得到一张随机分配的卡片。我已将卡片设置为键,并将点设置为哈希值,每次我尝试调用它时,它都没有放任何东西!

def random_card
  cards = ["two", "three", "four", "five", "six", "seven",
           "eight", "nine", "ten",
           "jack", "queen", "king", "ace"]

  cards[rand(13)]
end

def score
  card_value = {
  two: 2,
  three: 3,
  four: 4,
  five: 5,
  six: 6,
  seven: 7,
  eight: 8,
  nine: 9,
  ten: 10,
  jack: 10,
  queen: 10,
  king: 10,
  ace: 11,
}
puts "point #{card_value[:card]}"
end

def move
  while true
    puts '"hit" or "stick"'
    input = gets.chomp
    if input == "hit"
      puts card = random_card
      score
    end
    break if input == "stick"
  end
end

当用户输入“命中”时,输出应该是一张随机卡片和分配给该卡片的点数,例如三点 3

塞巴斯蒂安帕尔马占位符图像

最简单的就是更新

puts "point #{card_value[:card]}"

puts "point #{card_value[random_card.to_sym]}"

原因是card_value[:card]试图从 card_value 哈希中获取他们不存在的卡片密钥。

您的random_card函数从其主体中定义的卡数组中返回一个“随机”字符串值,作为字符串,您将得到相同的错误,因为键中的键card_value是符号,因此您需要将该结果转换为符号。



回答 dx7 不错的补充。

您可以只声明一个 CARD_VALUES 哈希,其中包含卡片名称和点,然后您可以使用它来获取Array#sample,这样您就可以避免为卡片添加一个无用的实例变量,并且在调用时必须将其作为方法参数传递random_card

CARD_VALUES = { two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10,
               jack: 10, queen: 10, king: 10, ace: 11 }

def random_card
  CARD_VALUES.to_a.sample
end

def move
  loop do
    puts '"hit" or "stick"'
    input = gets.chomp
    if input == 'hit'
      card, point = random_card
      puts "card: #{card}"
      puts "point: #{point}"
    end
    break if input == 'stick'
  end
end

move

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Redis,如何将集合存储为哈希键的值

如何将变量的值(字符串)设置为等于数组中的键?

Javascript:如何将变量的值设置为关联数组中的键?

如何将变量 = 设置为本地存储中的键

如何将值设置为类的变量并显示它?

如何将 Heroku 配置变量设置为 JSON 值?

如何将cmd变量设置为打开或关闭的值?

如何将变量的默认值设置为数组?

如何将变量设置为从hint('...')返回的值?

如何将变量设置为指针数组中的值

Python:当请求中没有值时,如何将变量设置为“ None”或“ 0”之类的值

如何将CSS变量设置为未设置的值“ --unset-it:未设置”?

如何将索引设置为变量?

如何将变量设置为属性?

如何将范围设置为变量?

如何将变量设置为属性

如何将多个值推送到相同的哈希键

如何使用数组元素作为哈希键并将所有哈希值都设置为给定值的方式将数组转换为哈希

如何将值设置为Javascript对象中的属性,该属性由键数组标识

如何将关联数组的键范围设置为一个值

如何将 Google Maps API 调用中的数据设置为变量?

如何使用RobotFramework将字典键设置为变量名而不是值

Golang将地图键设置为其值的变量

如何将哈希值小于x的键获取到数组列表中,以便每次键小于x值时将其重新生成为x值

当键的值为列表列表时,如何将字典转换为数据框?

输入大于max的值时,如何将QSpinBox的值设置为max?

在Golang中执行json Unmarshal时,如何将默认值设置为映射值?

如何将jQuery变量设置为Django模板变量

如何将php变量设置为输入文本html的值