Sto scrivendo una spiegazione per un po 'di codice per un corso e ho accidentalmente usato le parole method
e in modo function
intercambiabile. Ho deciso di tornare indietro e correggere la formulazione, ma ho incontrato un buco nella mia comprensione.
Da quanto ho capito, una subroutine è un function
se non agisce su un'istanza di una classe (il suo effetto è limitato al suo input / output esplicito), ed è un method
se 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 method
dovrebbe 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 methods
essere 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?