Scusate, dico la mia con riferimento in particolare ai post #12 e #13.
In generale dovrebbe essere possibile, senza alcuna confusione di sorta da parte del compilatore, utilizzare per una variabile lo stesso identificativo utilizzato per il nome di una funzione. La ratio sta nel fatto che il compilatore dovrebbe comprendere, senza alcuna difficoltà, che si trova nella parte dichiarativa del metodo e quindi ovviamente l'identificativo è una variabile locale. Mi spiego con l'esempio di cui sopra:
Sub EditText1_TextChanged (OldText As String, New As String)
...
New = "abc"
..
End Sub
Public Sub New(myParam as Int)
..
End sub
In questo caso "New" (in TextChanged) è necessariamente la dichiarazione di una variabile locale e non la chiamata ad una funzione di nome New. E non vedo come il compilatore possa confondersi.
Se nel corpo di TextChanged avessi un New = "abc" teoricamente il compilatore potrebbe essere confuso e non sapere se mi sto riferendo alla variabile locale New (ed in tal caso l'assegnazione è ok) oppure sto chiamando in modo errato la funzione New (e quindi avvisarmi con warning o errore).
La cosa si risolve facilmente differenziando tra:
New = "abc" <-- new variabile locale
<module name>.New(58) <-- chiamata a funzione di nome New definita nel modulo X
Ho utilizzato impropriamente il termine funzione per la public New laddove sarebbe stato più corretto parlare di procedura (le mie radici sono nel Pascal) o metodo.
E se a runtime volessimo (corretti i tipi e le definizioni in modo opportuno) chiamare TextChanged passando come secondo parametro il risultato della funzione?
Scriveremmo TextChanged("old1", Main.New(77)), ancora una volta senza possibilità di confusione.
Ad ogni modo, direi che le spiegazioni fornite da Marco siano valide e condivisibili. Dobbiamo ricordare che B4X è un linguaggio di suo, non è Pascal, C. C#, VB etc etc e quindi è giusto che abbia le sue regole. Come abbiamo accettato quelle degli altri, ora possiamo serenamente uniformarci a quelle di B4x.
ps: lasciate che in questa occasione io possa esprimere il mio ringraziamento al prof. Niklaus Wirth per avere ideato, tra le altre cose, il linguaggio Pascal, il mio primo vero amore (informatico..lo preciso per
@LucaMs, che non si sa mai..ehehe)