Я пишу объяснение некоторого кода для курса, и случайно использовал слова methodи functionвзаимозаменяемо. Я решил вернуться и исправить формулировку, но наткнулся на дыру в моем понимании.
Из того, что я понимаю, подпрограмма - это, functionесли она не действует на экземпляр класса (ее эффект ограничен его явным вводом / выводом), и это methodесли она действует на экземпляр класса (она может нести побочные эффекты на случай, который делает его нечистым).
Здесь есть хорошая дискуссия на эту тему. Обратите внимание, что согласно принятым определениям ответа, static methodдолжен фактически быть функцией, потому что экземпляр никогда не передается неявно, и он не имеет доступа ни к каким членам экземпляра.
С этим разум, хотя, разве статика не должна быть на methodsсамом деле функциями?
По их определению они не действуют на конкретные экземпляры класса; они только «привязаны» к классу из-за родства. Я видел несколько хорошо выглядящих сайтов, которые ссылаются на статические подпрограммы как «методы» ( Oracle , Fredosaurus , ProgrammingSimplified ), поэтому либо они все пропускают терминологию, либо я что-то упускаю (я думаю, что последнее) ,
Я хотел бы убедиться, что я использую правильную формулировку.
Кто-нибудь может это прояснить?