我只是在玩w/Ruby,并试图创建一个函数,但由于某种原因,它不工作的方式,我认为它会。不知道为什么我有这个问题,但这是我的代码:
class Script
print "Enter a number: "
number = gets
def random (temp)
puts "#{temp}"
puts "inside function"
end
random (number)
end
错误:Script.rb:13:in `<class:Script>': undefined method `random' for Script:Class (NoMethodError)
from Script.rb:1:in `<main>'
问题是,您将random
方法定义为实例方法,但在类级别调用它。有两个选项可以解决这个问题:
使它成为一个类方法(注意self
):
class Script
def self.random(temp)
puts "#{temp}"
puts "inside function"
end
print "Enter a number: "
number = gets
random(number)
end
或者修改方法,先创建一个实例(注意new
):
class Script
def random(temp)
puts "#{temp}"
puts "inside function"
end
print "Enter a number: "
number = gets
new.random(number)
end
random
是一个实例方法,而不是一个类方法,所以你的脚本引发NoMethodError,你应该创建一个script类的对象,然后调用随机方法。
class Script
print "Enter a number: "
number = gets
def random (temp) # it is a instance method.
puts "#{temp}"
puts "inside function"
end
Script.new.random(number)
end
或者将random
方法定义为类方法。
class Script
print "Enter a number: "
number = gets
def self.random (temp) # define random as a class method
puts "#{temp}"
puts "inside function"
end
random(number)
end