Почему Pathname не считается строкой (или когда можно добавить метод to_str в класс)? - PullRequest
3 голосов
/ 27 января 2012

Был отчет об ошибке Pathname # to_str больше не работает .Наличие to_str в Pathname позволит вам использовать Pathname везде, где вы используете строку, например, с Dir, system и т. Д. Однако отчет об ошибке был отклонен, и из сообщения о фиксации следует, что метод to_strнамеренно удален.

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

Так почемуto_str не подходит для Pathname, и когда to_str можно использовать?

1 Ответ

2 голосов
/ 27 января 2012

Вот статья , которая пытается ответить на ваш вопрос, но, на мой взгляд, на самом деле не удается.

Примерно в то же время Pathname#to_str было удалено Exception#to_str было также удалено - ясно, что в это время Мэтц пытался нарисовать линию на песке между "строковым" и "нестроковым" "классы. Изменение Exception имеет смысл - исключение, если использовать ваши слова, «не может быть без потерь преобразовано в строку и обратно», потому что объект исключения содержит много другой информации - в частности, трассировки стека - которая будет потерял в этом преобразовании.

Я могу только догадываться, но держу пари, что Матц чувствовал то же самое по отношению к Pathname, хотя неясно, почему. Даже в документации (1.9.3) в какой-то момент говорится (в разделе «Основные методы»): «Эти методы эффективно манипулируют строкой, потому что это все путь». Несколько источников, которые я нашел - в дополнение к одному из @MarkThomas, цитирует - используют Pathname в качестве примера класса, для которого to_str действительно имеет смысл, вероятно, принимая реплику от Хэла Фултона Рубиновый Путь .

Полагаю, это не очень удовлетворительный ответ. Если вы действительно хотите знать, вам может потребоваться Ruby-Talk или Ruby-Core . Вы можете попробовать спросить Матца [в Твиттере] (Юкихиро Мацумото), но он, кажется, разговаривает исключительно на японском языке. Wycats и Джереми Кемпер может иметь немного больше понимания, и может показаться довольно доступным. Удачи!

P.S. В этой статье есть раздел "Техническое объяснение to_str и друзей", который мне показался интересным, но это не делает ничего лучше, чем отвечать на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...