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