Sto studiando il Basic di LibreOffice usando il libro di Andrew Pitonyak (https://www.pitonyak.org/OOME_4_1.odt) e sono incappato in un passaggio dove o c'è un errore oppure non ho capito niente. Prima di scrivere a Pitonyak volevo vedere se qualcuno ha una qualche esperienza da condividere.
Il passaggio si trova a pag.57 (cap. 3.6.1 paragrafo “Pass by reference or by value”):
The following macro uses a variant and a string to call a macro that accepts a variant, and the macro that accepts the string. Passing a variant to a method that accepts a string argument basses the value by reference. The unexpected thing is that passing a string to the method that accepts a variant, passes the value by reference.
Ci sono 2 sub: una accetta un parametro Variant, l'altra un parametro String. L'autore vuole mostrare cosa succede quando si passa un parametro non corrispondente con il tipo atteso, e fa 4 casi. Eseguendo la macro, l'output mostra i seguenti casi:
- variabile Variant, parametro String = passaggio by value (il valore della variabile non viene modificato)
- variabile String, parametro String = passaggio by reference
- variabile Variant, parametro Variant = passaggio by reference
- variabile String, parametro Variant = passaggio by reference
Però leggendo il testo, sembra che il caso 1 dovrebbe essere by reference. Il problema è il verbo ‘basses’, che non ho trovato né nel dizionario Merriam-Webster né nel Cambridge. I traduttori on-line lo traducono con ‘abbassare, ridurre’, ma a me sembra più un typo per ‘passes’, e in tal caso la traduzione automatica ha più senso. Però in questo caso l'esempio 1 non sarebbe corretto, perché il passaggio dovrebbe avvenire by reference (a meno che la frase non vada intesa in altro modo).
È aperto il dibattito…