Что такое чистые переменные?

Я был удивлен, обнаружив, что этот код компилируется:

pure string Foo = SomePureFunction(123);

pure упоминается только в контексте функций в онлайн-документации.

Что такое переменные pure и чем они отличаются от переменных immutable и const?


person Maxpm    schedule 03.02.2012    source источник


Ответы (1)


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

person dnadlinger    schedule 03.02.2012
comment
Не могли бы вы привести отчет об ошибке или обсуждение в списке рассылки? - person Maxpm; 04.02.2012
comment
Я могу подтвердить это (хотя и не привести ошибку). - person FeepingCreature; 04.02.2012
comment
Это связанный отчет об ошибке, но если есть другие отчеты, они, вероятно, для конкретных случаев проблемы. Следует отметить, однако, что во многих случаях Уолтер Брайт не считает игнорируемые атрибуты ошибкой (хотя в некоторых случаях он так считает). Кроме того, в некоторых случаях строгие требования могут вызвать проблемы с общим кодом. Таким образом, исправлено это или нет, скорее всего, будет определяться от случая к случаю< /а> основа. - person Jonathan M Davis; 04.02.2012
comment
Я создал отчет об ошибке для этой конкретной проблемы. Он может быть помечен или не помечен как дубликат, но, по крайней мере, этот конкретный случай игнорирования недопустимых атрибутов теперь помечен. - person Jonathan M Davis; 04.02.2012