Desidero - if elseif else
istruzione in NetLogo. Come posso farlo in modo efficiente? Ho controllato la documentazione di NetLogo senza alcun comando per farlo. Previous similar question non ha risposto direttamente ma risolto nel contesto.if else else implementazione in ambiente Netlogo
Una soluzione semplice è:
let flag true
if(condition1)
[
...
set flag false
]
if(flag and condition2) ;else if statement
[
...
set flag false
]
if(flag) ;else statement
[
...
]
Sto cercando per gli altri quelli più efficienti.
Modifica: bandiera aggiunta nel secondo se condizione su suggerimento di Nicolas.
Il codice proposto non è proprio come un 'if' /' elseif'/'else': cosa succede se' condition1' e 'condition2' sono entrambi' true'? Dovresti cambiare il tuo secondo 'se' a' if (flag e condition2) '. Ma questo diventa molto caotico. Finché non sarà disponibile una soluzione migliore (che potrebbe essere prima di quanto pensassi ...) consiglierei di attenersi al modello descritto da Seth in http://stackoverflow.com/a/20332555/487946. –
Sì, non so come mi sono perso. Immagino che l'approccio di Seth sia solo una soluzione. Ma rende il tutto meno leggibile, soprattutto quando i blocchi includono più codice. –
Siamo consapevoli che dovrebbe esserci un modo migliore. Vedi https://github.com/NetLogo/NetLogo/issues/344 –