我是Ruby新手。 我需要让这个脚本工作:
puts "Do you like cats?"
ask = gets
def ask(n)
if ask == yes
return "I do too"
end
if ask == no
return "Dogs are better"
end
end
puts "#{ask(n)}"
错误信息是:
pracif.rb:15:在
<main>': undefined local variable or method
n'中 main:Object(NameError)
答案 0 :(得分:2)
这是一个适合您的脚本:
puts "Do you like cats?"
answer = gets
def ask(n)
if n == 'yes'
return "I do too"
end
if n == 'no'
return "Dogs are better"
end
end
puts ask(answer.downcase.chomp)
<强>释强>
正如错误所说,您试图传入未定义的变量n
其次,您的方法名称ask
与变量名称相同。我已将变量重命名为answer
而不是
第三,将yes
和no
括在引号中
最后,由于您使用的是gets
,\n
会附加yes\n
,因此您的所有条件都不会匹配。所以我使用chomp
删除了\n
。并且还使用downcase
使输入不区分大小写。
修改强>
正如@Jordan在评论中所提到的,没有理由对puts语句使用字符串插值。所以直接调用该方法就足够了。
答案 1 :(得分:0)
您的脚本没有定义n
本地变量,您最后会传递给ask(n)
方法。
将脚本ask
的{{1}}变量从用户重命名为gets
,并将其传递给最后的answer
方法,如下所示:
更新了代码以解决我在第一次运行中没有看到的其他问题。
ask
答案 2 :(得分:0)
您的代码存在许多问题。尝试更像:
def reply(response)
return 'I do too' if response == 'yes'
return 'Dogs are better' if response == 'no'
'Invalid response!'
end
puts 'Do you like cats?'
response = gets().chomp()
puts reply(response)
注意变量名称。如果你保持描述性,就更容易发现错误。