2013-11-20 2 views
-4

Является ли это правильный способ overwite в === метод:перезапись === метод и как вызвать его

def ===(b) 
    self.venue === b.venue 
    print " new === !!!!" 
end 

И как я его называю по объектам a и b, которые (как экземпляры одного и того же класса) оба имеют переменную venue?

Я пробовал puts a.===(b), но он не работает. (Это говорит private method called for #<class1:0xsdfsd...>

+0

Можете ли вы предоставить более широкий контекст? Где вы определили свой метод? –

+1

Ваше сообщение об ошибке недостаточно. Какой метод говорит, что это личное? А какой класс этот метод? – sawa

ответ

1

Да, это правильный способ переписать === метод

Вы можете вызвать этот метод с:.

a === b 

или

a.===(b) 

У вас есть эта ошибка, вероятно, потому, что вы определили метод === как частный. Определите его как общедоступный метод (выше ключевого слова private), и он должен Работа.

1

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

Хотя вы можете назвать это с помощью ===, гораздо чаще используется оператор в case-statement или в методе grep.

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