2016-06-03 3 views
-3

им новый рубина так что этот код не работает, пожалуйста, предоставьте мне правильный способ вызова метода в классеВызов метода в классе

Class TestClass 

    def testMethod 
    puts "hello" 
    end 

    testMethod 
end 

UPDATE

Привет всем спасибо за все помощь и комментарии так же, как @Stefan и @Matt, мой пример очень необычен, чтобы использовать этот способ и спасибо за то, что он дал правильный путь, в любом случае я просто хочу добавить это из своего вопроса, и я нашел способ работать

class TestClass 
    def self.testMethod 
     puts "hello" 
    end 

    TestClass.testMethod 
end 
+3

пожалуйста, попробуйте прочитать некоторые учебники, прежде чем спрашивать. – Ilya

+0

Да, это довольно просто - вам, возможно, сначала нужно прочитать некоторые базовые учебники. Чтобы вызвать метод на объекте, вы должны создать экземпляр объекта и вызвать метод на объекте aka отправить сообщение testMethod этому экземпляру TestClass. – unused

+0

Общепринято объявлять методы внутри тела класса и вызывать другие методы из этих методов. Но очень необычно вызывать методы непосредственно изнутри тела класса. Хотя вы можете это сделать, скорее всего, это не то, что вы ищете. – Stefan

ответ

1
class TestClass 
    # a class method 
    def self.test_method 
     puts "Hello from TestClass" 
    end 

    # an instance method 
    def test_method 
     puts "Hello from an instance of TestClass" 
    end 
end 

# call the class method 
TestClass.test_method 


# create and instance object of TestClass 
instance_of_TestClass = TestClass.new 

# call the instance method of the new object 
instance_of_TestClass.test_method 
+1

Поскольку OP является новым для Ruby, статический вывод, подобный «puts» hello from method method », вероятно, будет легче понять. – Stefan

+0

Я согласен, спасибо, редактируя мой ответ прямо сейчас –

0

Вы должны вызвать метод с использованием в классе, как:

class TestClass 

    def testMethod 
    puts "hello" 
    end 
    def test_2 
    testMethod 
    end 
end 

object = TestClass.new() 
puts object.test_2 
+2

'class' вместо' Class' – Ilya

+0

Вы также можете определить его как метод класса, выполнив 'def self.testMethod'. Тогда вы сможете использовать его вне метода экземпляра. – mlovic

+0

Какова цель 'test_2'? – Stefan

-1

Ваш пример определяет класс с методом экземпляра. Затем вы пытаетесь вызвать метод экземпляра из класса - это не сработает.

Вместо этого вам нужно вызвать метод как в экземпляре или преобразовать его в метод класса.

class TestClass 

    def self.testMethod 
    puts "hello" 
    end 

    testMethod 
end 

Instance и уровень класса различие является фундаментальным понятием, вы получаете выгоду от принятия некоторых учебников, начните с чтением из http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

+0

'Класс TestClass'? – Ilya

+0

@Ilya Будьте более конкретными в своих комментариях, пожалуйста. Я отредактировал то, о чем я * думаю *, о котором вы говорите. – Matt

+0

@ilya Это просто излишне грубо и ничего не добавляет к потоку. – Matt

Смежные вопросы