我的if语句不起作用,并且想知道我是否可以得到一些帮助。我会输入“FnPrint”,我的if语句不起作用。
puts "hi"
g = gets()
# Class for print command
x = "FnPrint"
class Fnprint
def Print
if x = g
puts "it worked"
else
puts "no"
end
end
end
Fnprint.new.Print
当我试图运行它时,我一直这样做:
lang.rb:9:in `Print': undefined local variable or method `g' for #<Fnprint:0x007f9379939040> (NameError)
from lang.rb:17:in `<main>'
答案 0 :(得分:2)
你在这里做了很多不正确的事情
1)不正确的比较运算符=
而不是==
2)尝试访问超出班级范围的vaiables g
和x
。
3)你的方法名是一个常量(在Ruby中,任何以大写字母开头的东西都是常量)。方法名称应全部为小写,并且在多字符的情况下与_
分开。
class FnPrint
def print(x)
g = gets.strip
if x == g
puts 'it worked'
else
puts 'no'
end
end
end
fn_print_object = FnPrint.new
fn_print_object.print('FnPrint')
答案 1 :(得分:1)
请使用以下内容:
if x == g
当你做
时if x = g
您只需告诉ruby将g
的值分配给x
。
您还尝试从Print
方法范围中访问变量。请考虑重构您的代码,如下所示:
class FnPrint
def print(x)
if x == gets().strip
puts "it worked"
else
puts "no"
end
end
end
puts "hi"
FnPrint.new.print('FnPrint')
情侣点了解:
FnPrint
,FooBar
,Foo
,...)print
是类FnPrint
FnPrint.new
创建一个新的类FnPrint
实例,以便您可以在其上调用print
答案 2 :(得分:0)
if x = g #=> is Assignment
if x == g #=> is Comparison
答案 3 :(得分:0)
if x=g
assigns g
至x
,然后评估这是否真实。
if x == g
评估x
和g
是equal。
你可能想写这样的东西:
puts 'hi'
#
class Fnprint
def print
x = 'FnPrint'
g = gets.strip
if x == g
puts 'it worked'
else
puts 'no'
end
end
end
Fnprint.new.print
答案 4 :(得分:0)
if x=g
实际上是一个赋值,并将g的值返回到if语句。
使用比较运算符==