primo caso:
esegue if __name__ eccetera e quindi esegue la routine, trova il print e scrive “prova”
poi esegue print AddObjects eccetera quindi:
1) esegue di nuovo la routine, trova print e scrive “prova”
2) finita l’esecuzione della routine, la print AddObjects … scrive il valore restituito: “Success”
secondo caso:
cambia semplicemente l’ordine di quanto detto sopra, per cui prima stampa “prova” e “Success”
e poi stampa “prova”
Quali parole ?
Dicci cosa non e’ chiaro.
Il break ti fa solo uscire dai cicli.
Per uscire da una funzione o metodo abbiamo sempre usato return in Python, come anche in C#.
Il VSB non usa return … ma lui ama distinguersi.
E’ esattamente quello che fa.
E la if che puo’ farti uscire, eseguendo il return in certi casi.
La if dice: se il risultato non e’ Success, allora return …
E’ sempre e solo il return che ti fa uscire dalla routine.
Non deve essere indentata. Va eseguita se la if e’ falsa.
E’ come scrivere
if index>=0:
return Rhino.Commands.Result.Success
else:
return Rhino.Commands.Result.Failure
Se non esce con la if, esce alla riga dopo.
Non c’e’ niente di strano.
Ci sono due if prima che in certi casi eseguono return
Come fa l’ultima riga ad essere sempre eseguita ?
Qui:
if go.CommandResult()!= Rhino.Commands.Result.Success:
return go.CommandResult()
se il risultato non e’ Success, usciamo dalla routine.
E qui:
if index>=0: return Rhino.Commands.Result.Success
se index e’ maggiore o uguale a zero, usciamo dalla routine.
In questi casi, come ci arrivi all’ultima riga ?
Se permetti una considerazione …
Ho l’impressione che tu abbia dimenticato il return
E’ vero che negli script in Python spesso non si usano funzioni e lo script non deve restituire niente, quindi potresti essere un po’ “fuori allenamento” col return.
Ma e’ sempre stata l’istruzione usata per restituire un valore da una funzione.
Forse prima di ammattire con questi esempi conviene ripassare un momento il return.
Serve anche per il C#, anche lui usa il return.