我如何将变量设置为布尔值?

时间:2016-03-25 08:25:14

标签: ruby

而不是gets.chomp,我可以使用任何东西将他们的响应变成布尔值吗?

puts "Do you like pizza? (yes or no)"
pizza = gets.chomp    
if pizza == "yes"
  pizza = true
else
  pizza = false
end

我尝试了gets.to_bgets.bool,但它似乎没有效果。

2 个答案:

答案 0 :(得分:3)

我只会使用get[0]返回第一个字符的内容,并允许您接受 y

puts 'Do you like pizza? (yes or no)'
pizza = gets[0] == 'y'

或者您可以自己在to_b上定义String方法:

class String
  def to_b
    # might want to add even more values to the list
    %w( y yes true 1 ).include?(self.chomp.downcase) 
  end
end

'yes'.to_b
#=> true
'no'.to_b
#=> false

答案 1 :(得分:1)

您可以这样做:

puts "Do you like pizza? [yes/no]:"
pizza = gets.chomp    
case pizza
  when 'y','Y','yes'
    pizza = true
  when 'n', 'N','no' 
    pizza = false
end
puts pizza