在Ruby

时间:2015-07-15 08:35:34

标签: ruby-on-rails ruby

这可能是一个愚蠢的问题,但我无法让它发挥作用。很确定我错过了什么。

我想将布尔值设置为false 然后仅在满足条件时将其设置为true

boolTest = false

until boolTest = true
    puts "Enter one fo these choices: add / update / display / delete?"
    choice = gets.chomp.downcase

    if choice == "add" || choice == "update" || choice == "display" || choice == "delete"
        boolTest = true
    end
end

只是刚开始学习Ruby,所以也许我会混淆其他语言的功能。

1 个答案:

答案 0 :(得分:6)

由于您正在使用until,因此有效地写出while not boolTest。您无法使用=,因为它已被保留用于分配;相反,省略布尔条件。   检查布尔值对布尔值没有价值;如果你真的想保留它,你必须使用==

boolTest = false

until boolTest
  puts "Enter one fo these choices: add / update / display / delete?"
  choice = gets.chomp.downcase

  if choice == "add" || choice == "update" || choice == "display" || choice == "delete"
    boolTest = true
  end
end

作为优化/可读性提示,您还可以调整布尔条件,以便choice没有重复的语句;你可以在数组中声明所有thoe字符串,并通过choice检查数组中是否存在include?

boolTest = false

until boolTest
  puts "Enter one fo these choices: add / update / display / delete?"
  choice = gets.chomp.downcase

  boolTest = %w(add update display delete).include? choice
end