parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 01.07.2010 03:45 / 01.07.2010 03:53

$var[$oObj] (а также и $oObj в чистом поле) -- это не работа с объектом в строковом контексте (т.е. это не попытка неявного преобразования его в строку). это -- копирование указателя на объект. не нужно говорить, что это поведение менять нельзя, т.к. тогда станет невозможно копировать ссылку на объект.
А я об этом и не говорил.
Я о таком: $result[the object: $oObject].
Да, увы, приведения к строке как такового нет, $var[$oObj] занят передачей указателя.
кроме того, если данную фичу реализовать, это может привести к появлению сложноотлавливаемых ошибок
Не думаю, что эти ошибки будут сложнее возможных при неявном приведении типов.
Системные классы смогут вызывать исключения, если не имеют строкового представления, разве нет?
Я не о «заработает само», конечно, отслеживание и генерацию исключений нужно добавлять, если такая необходимость есть.
это преподнесено так, будто оно заработает самостоятельно.
увы, всё равно придётся написать сериализатор для объектов каждого типа. это существенно большая работа, чем последующие написания ^oObj.debug_print[] вместо $oObj.
Само, разумеется, не заработает.
Но, если считаем, что сериализатор у объекта уже есть, то для получения «$oObj» вместо «^oObj.debug_print[]» нужно будет просто навесить его вызов в @GET[type].
Совместимость присутствует.
к тому же мне кажется, что для отладки неудобно у каждого класса создавать сериализаторы (который после отладки удалять?).
Не обязательно удалять.
В том же Python строковое представление есть у всех объектов (информативность не обсуждаем).
Которое позволяет сделать print что-угодно и бегло оценить с чем имеешь дело.
Так и тут — некое простое представление объекта.

Про классы отладки знаю, пользуюсь, не всегда, лично мне, хочется их дёргать.