Sto scrivendo una spiegazione per un po 'di codice per un corso e ho accidentalmente usato le parole methode in modo functionintercambiabile. Ho deciso di tornare indietro e correggere la formulazione, ma ho incontrato un buco nella mia comprensione.
Da quanto ho capito, una subroutine è un functionse non agisce su un'istanza di una classe (il suo effetto è limitato al suo input / output esplicito), ed è un methodse opera su un'istanza di una classe (può portare effetti collaterali sull'istanza che lo rendono impuro).
C'è una buona discussione qui sull'argomento. Si noti che dalle definizioni della risposta accettata, una statica methoddovrebbe effettivamente essere una funzione perché un'istanza non viene mai passata implicitamente e non ha accesso ai membri di alcuna istanza.
Con questo, però, non dovrebbero methodsessere le funzioni statiche ?
Per loro definizione non agiscono su particolari istanze di una classe; sono solo "legati" alla classe a causa della relazione. Ho visto alcuni siti di bell'aspetto che si riferiscono a subroutine statiche come "metodi" ( Oracle , Fredosaurus , ProgrammingSimplified ), quindi o stanno tutti trascurando la terminologia, o mi manca qualcosa (la mia ipotesi è la seconda) .
Mi piacerebbe essere sicuro di usare la formulazione corretta.
Qualcuno può chiarire questo?