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