/ / Въпрос за „получава“ в рубин - рубин, вход, получава

Въпросът за "получава" в рубин - рубин, вход, получава

Чудех се защо, когато се опитвам да стигна до различни входове, той игнорира втория вход, който имах.

#!/usr/bin/env ruby
#-----Class Definitions----

class Animal
attr_accessor :type, :weight
end

class Dog < Animal
attr_accessor :name
def speak
puts "Woof!"
end
end

#-------------------------------

puts
puts "Hello World!"
puts

new_dog = Dog.new

print "What is the dog"s new name? "
name = gets
puts

print "Would you like #{name} to speak? (y or n) "
speak_or_no = gets

while speak_or_no == "y"
puts
puts new_dog.speak
puts
puts "Would you like #{name} to speak again? (y or n) "
speak_or_no = gets
end

puts
puts "OK..."

gets

Както можете да видите, той напълно пренебрегна моето ми заявление.

Това е примерна продукция.

Hello World!

What is the dog"s new name? bob

Would you like bob
to speak? (y or n) y

OK...

Отговори:

16 за отговор № 1

Проблемът е, че получавате нов редсимвол на вашия вход от потребителя. докато те въвеждат „y“, всъщност получавате „yn“. Трябва да изключите новата линия с помощта на метода "chomp" на низ, за ​​да може тя да работи както искате. нещо като:

speak_or_no = gets
speak_or_no.chomp!
while speak_or_no == "y"
#.....
end

-1 за отговор № 2

след като използвате get () ... отпечатайте този низ .. с помощта на p (str) обикновено низ ще има n в края .. chomp! трябва да се използва метод за премахването му ...