Życzę - if elseif else
oświadczenie w NetLogo. Jak mogę to zrobić wydajnie? Sprawdziłem dokumentację NetLogo bez polecenia, aby to zrobić. Previous similar question nie odpowiedział bezpośrednio, ale rozwiązano go w kontekście.if elseif else implementacja w środowisku Netlogo
Prostym rozwiązaniem jest:
let flag true
if(condition1)
[
...
set flag false
]
if(flag and condition2) ;else if statement
[
...
set flag false
]
if(flag) ;else statement
[
...
]
szukam innych bardziej wydajnymi.
Edytuj: dodano flagę w drugim pod warunkiem na sugestię Mikołaja.
Twój proponowany kod nie jest tak naprawdę 'if' /' elseif'/'else': co jeśli' warunek1' i 'warunek2' są oba' prawda'? Będziesz musiał zmienić swoje drugie 'if' na' if (flag i condition2) '. Ale to szybko staje się naprawdę nieprzyjemne. Dopóki nie pojawi się lepsze rozwiązanie (które może być wcześniej, niż myślisz ...), radziłbym trzymać się wzorca opisanego przez Setha w http://stackoverflow.com/a/20332555/487946. –
Tak, nie wiem, jak to przegapiłem. Domyślam się, że podejście Setha jest tylko rozwiązaniem. Ale czyni to nieco mniej czytelnym, zwłaszcza gdy bloki zawierają więcej kodu. –
Jesteśmy świadomi, że powinien istnieć lepszy sposób. Zobacz https://github.com/NetLogo/NetLogo/issues/344 –