gpt4 book ai didi

ruby - 如何停止这个在 Ruby 中被错误初始化的方法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:07 25 4
gpt4 key购买 nike

我制作了一个逻辑上正确的 if...else 循环(我认为),但即使我输入“N”(代表否),它仍然会调用一段代码。

这是我的代码:

print "\n"

def reversal
puts "Hello! Let's reverse your name! (Avoid capitals!)\n"
name = gets.chomp
puts "YOUR REVERSED NAME IS!!\n"+name.reverse+"\n\n(Press enter to continue)"
input = gets.chomp
print "So, did you like it? Y or N!\n"
feedback = gets.chomp
end

reversal

if feedback = "Y" || feedback = "y" || feedback = "Yes" || feedback = "YES" || feedback = "yes"
puts "Cool! Would you like to try again? Y or N!\n"
nestedfeedback = gets.chomp

if nestedfeedback = "Y" || nestedfeedback = "y" || nestedfeedback = "Yes" || nestedfeedback = "yes" || nestedfeedback = "YES"
reversal
end
else
puts "I'm sorry for that..."
end

我附上了这里发生的事情的图片(我正在输入 N,但无论如何都会调用代码块/方法):

wrongly initialised method

最佳答案

feedback=gets.chomp 将定义一个局部变量,仅在 reversal 内部可见。当您在 reversal 之外测试它时,它将是 nil,因为它尚未在该上下文中定义。

此外,if feedback="Y"...定义 feedback"Y" , 不测试是否是。由于 "Y" 和所有其他变体都是真值,因此 if 总是会成功。

您可以做的很多事情包括:

  • 利用 feedbackreversal 的返回值这一事实,并在主代码中使用它而不是普通的 reversal:

    feedback = reversal
  • if 中使用 == 测试您的变量。

关于ruby - 如何停止这个在 Ruby 中被错误初始化的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com