我只是玩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>'
答案 0 :(得分:1)
问题是,您将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
答案 1 :(得分:0)
>=(2^i)n(h-2i)
是一个实例方法,而不是类方法,所以你的脚本引发了NoMethodError,你应该创建一个Script类的对象然后调用随机方法。
random
或将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