2012-04-02 5 views

ответ

-1

Вы не можете. Это одна из многих причин, почему вы никогда не должны напрямую обращаться к ivars.

+1

Уход за разработкой? http://stackoverflow.com/questions/9981614/is-it-bad-form-to-use-instance-vars-directly-in-ruby – m33lky

+1

OO - отправка сообщения. Доступ к ivar не является отправкой сообщения, поэтому он не является OO. Ruby - объектно-ориентированный язык, поэтому имеет смысл стремиться к объектно-ориентированному дизайну, не имея доступа к ivars. Или, чтобы перейти к другому определению OO: что отличает ООП от ADT-ориентированного программирования, является независимость представления и, в частности, способность поддерживать множественные представления. Доступ к ivars нарушает как независимость представления, так и множественные представления. В дополнение к этому, он также нарушает наследование, поскольку вы не можете переопределить ivars, только методы. –

+0

Я думаю, вы говорите об оригинальном ООП. Современное определение ООП ушло от этого. Не уверен, что вы подразумеваете, не имея возможности переопределить иваров. Ruby - динамически типизированный язык, не может ли дочерний объект помещать что-либо в ivar? У меня есть конкретный случай. Я не хочу, чтобы внешний мир мог получить доступ к этому конкретному ивару. – m33lky