Reputation: 972
This might be a silly question, but I just can't get it to work. Pretty sure I've missed something.
I want to set a boolean to false
Then set it to true
only when a condition is met.
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
Only just starting to learn Ruby, so maybe I'm confusing the capabilities of other languages.
Upvotes: 4
Views: 26525
Reputation: 474
I think what you missed is just "=="
in the if condition
until boolTest = true
you should use a double = not a single one
this will work for you
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
Upvotes: 1
Reputation: 106518
Since you're using until
, that's effectively writing out while not boolTest
. You can't use =
, since that's reserved for assignment; instead, omit the boolean conditional.
There's no value in checking a boolean against a boolean; if you really wanted to keep it though, you'd have to use ==
.
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
As an optimization/readability tip, you can also adjust your boolean conditional so that there's no repeated statement with choice
; you can declare all of thoe strings in an array, and check to see if choice
exists in the array through 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
Upvotes: 9