2015-05-07 2 views
-1

Я исполняющий класс только с этим кодом в RubyMine:Определения метода в RubyMine возвращает ошибку «неопределенный метода»

def saythis(x) 
    puts x 
end 
saythis('words') 

возвращает ошибку: undefined method `saythis', а не печатать строку 'words'. Что мне здесь не хватает? Репликация этого кода в irb выводит строку 'words'.

ответ

0

Я предполагаю, что вы написали класс, подобный приведенному ниже, и не записывали этот код в консоль irb. Проблема в том, что вы определяете метод экземпляра, но пытаетесь вызвать метод с уровня класса.

class Foo 
    def say_this(x)  # <= defines an instance method 
    puts x 
    end 
    say_this('words') # <= calls a class method 
end 

Там через два пути «исправить» это:

  1. Определение метода класса вместо метода экземпляра: def self.say_this(x)
  2. Вызвать метод экземпляра вместо вызова метода класса: new.say_this(x)
+0

Имеет смысл. & работает как волшебство, спасибо –