未定义方法NoMethodError



我只是在玩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

相关内容

最新更新