Что означает чистая функция, возвращающая чистый? - PullRequest
2 голосов
/ 09 декабря 2011

Что означает для чистой функции возвращение чистой?

pure int doubleMe(in int i) pure { return i * 2; }

Код компилируется без указания redundant storage class pure, поэтому я полагаю, что это не ошибка?

// DMD 2.056

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

Pure - это атрибут функции.Атрибуты функции могут идти перед типом возврата или после списка параметров.В обоих случаях описывается функция, а не тип возвращаемого значения.Следовательно, нет такой вещи, как «возвращение чистого».

Это должно вызвать ошибку, это, вероятно, ошибкаТо же самое игнорируется и с некоторыми другими атрибутами, такими как @ safe.

0 голосов
/ 10 декабря 2011

pure int вероятно, следует игнорировать.Тем не менее, я считаю, что причина, по которой мы имеем это, заключается в том, что функция может возвращать «чистую функцию».В этом случае я думаю, что это спорно, является ли это ошибка или нет.

...