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