Я предположил, что чистые функции всегда должны иметь возвращаемый тип (т. е. не должны быть void
) и должны иметь один и тот же вывод независимо от состояния объекта, а нечистые функции изменяют состояние объекта или печатают состояние объекта.
Но в учебнике, который я использую, говорится, что:
Метод доступа обычно содержит оператор возврата, но метод, выводящий информацию о состоянии объекта, также может быть классифицирован как метод доступа.
Я в замешательстве. Который правильный?
ИЗМЕНИТЬ
Небольшое уточнение. Что заставляет меня задать этот вопрос:
Последний вопрос: «Укажите тип используемой функции», и люди, комментировавшие там, заявили, что это нечистая функция, поскольку она печатает.
Так является ли эта функция чистой или нечистой?
access()
является средством доступа; Я бы сказал, что это не так. Проблема чистоты по-прежнему кажется ортогональной, и, судя по вашему вопросу, вы, кажется, уже знаете ответ на эту часть. :) - person yshavit   schedule 14.03.2014Accessors
возвращает информацию вызывающему — они не используют боковую связь (в данном случае печать) для передачи информации от объекта куда-то еще. Печать является побочным эффектом; это не будет считаться доступом/доступом к данным. - person ToolmakerSteve   schedule 01.11.2019access()
объявляется возвращающим экземпляр типаVoid
, но его тело не возвращает. Кроме того, этот пример нарушает соглашения об именах Java, поскольку требует, чтобы имена классов записывались в PascalCase. - person MC Emperor   schedule 07.11.2020