未定义的方法NoMethodError

时间:2015-09-26 06:08:21

标签: ruby

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

2 个答案:

答案 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