emilio
3 Dicembre 2023, 2:45pm
21
Bene !
… Non sapevo che adesso ci fossero le tuple anche in C# … sono rimasto parecchio indietro.
Buono a sapersi.
Anche questo e’ un buon modo.
Bene, ormai conosci diversi metodi.
Non credo che gli esempi in Python ti metteranno piu’ in difficolta’.
0904
3 Dicembre 2023, 4:45pm
22
ma io credevo che in quest’occasione me l’avvessi suggerito nell’usarlo
0904
3 Dicembre 2023, 5:38pm
24
Emilio non dirmi parolacce:
go.Get();
if ( go.CommandResult() != rh.Commands.Result.Success ) return go.CommandResult();
go.Get();
if ( go.Object(0).Curve() == null ) return rh.Commands.Result.Nothing;
a quanto sembra con quest’ultima sintassi, il problema della sintassi precedente non si presenta. . .
in pratica rh.Commands.Result.Failure viene visto come un oggetto, mentre go.CommandResult() no
emilio
3 Dicembre 2023, 8:42pm
25
Cioe’ nel primo caso hai un errore, mentre nel secondo no ?
Sembra strano … il tipo e’ lo stesso.
Il metodo e’ lo stesso, suppongo.
E quale tipo dichiara di restituire ?
0904
3 Dicembre 2023, 9:50pm
26
esatto
static object Mtd_GetCrvs()
ho messo object come return per le curve
e non mi torna errore se nel return
metto Nothing oppure Failure ecc
facendo delle prove mi è capitata questa combinazione per caso che ha funzionato. . .
return go.CommandResult()
return rh.Commands.Result.Nothing
osservandoli però anche se sono lo stesso tipo non credo si possa dire che siano la stessa cosa
correggimi se sbaglio, nel primo caso viene richiamato un Metodo nel secondo non credo. . .
emilio
3 Dicembre 2023, 10:07pm
27
Visto che si tratta di una enum , suppongo che per restituire un object ,C# usi il boxing:
Non conosco le regole della sintassi. Forse restituendo il risultato di un metodo il boxing non viene applicato.
… Non ho idea …
Si’, sara’ quella la differenza che conta … ma, come dicevo, resto nel campo delle ipotesi …
Potresti provare con un cast a convertire il valore da restituire in object
if ( go.CommandResult() != rh.Commands.Result.Success ) return (object)(go.CommandResult());
Non so se il secondo paio di parentesi aggiunte sia necessario, ma nel dubbio io provo a scriverle …
Perche’ per le curve ?
Vuoi dire per poter restituire sia Curve che Result ?
Quindi abbandoni sia le tuple che i parametri out e torni a usare C# come fosse Python.
Se e’ quello che vuoi …
0904
3 Dicembre 2023, 10:15pm
28
appena ho visto questo funzionamento fin’ora improbabile ho subito postato la notizia
ma appena fatto alcune prove non credo che vada bene, essendo che poi nel primo
Metodo che chiama il secondo Metodo, poi si ritrova con un oggetto Curva o Result
e mi ritrovo con lo stesso problema nel primo Metodo quello che chiama
essendo che se è un Oggetto non mi compara con il Result
provo il cast come mi hai chiesto e ti faccio sapere.
emilio
3 Dicembre 2023, 10:19pm
29
Il cast serve se vuoi resituire un object .
Se cambi idea e pensi di restituire qualcos’altro, lascia perdere il cast.
0904
3 Dicembre 2023, 10:23pm
30
(cancellato la risposta di prima)
vabbè come non detto, ritorno all’ out object come parametro