2016-02-24 3 views
0

, что является наиболее эффективным способом перевести этот Java код в NetLogo:воспроизводимый Java логики управления, если()

boolean cont = true; 
for (int i = 0; cont && i < 10; i++) { 
    if (condition) { 
    // do stuff 
     cont = false; 
    } 
} 

Я пытался что-то по этой линии:

let cont true 
while [cont][ 
    foreach a-list [ 
    if (condition)[ 
     ;; do stuff 
     set cont false 
    ] 
    ] 
] 

, но это не как эффективный, так как foreach может закончиться, а состояние не будет

ответ

1

Вы можете использовать stop, чтобы выйти из процедуры. Однако будьте осторожны: stop выходит из всей процедуры, а не только из цикла. Это может быть решено путем заключения соответствующего кода в его собственной процедуре:

to loop-through-list 
    foreach a-list [ 
    if condition? [ stop ] 
    ; do stuff... 
    ] 
    print "Be careful: this line won't execute!" 
end 

Немного общих советы: NetLogo имеет свой собственный способ делать вещи, и это очень отличается от Java. В частности, я бы предложил избегать индексов и while циклов в вашем коде NetLogo. Обычно они могут быть заменены на foreach или map, что приводит к более надежному и поддерживаемому коду.

+0

Я вижу ... это может быть процедура отчета? вместо вызова stop, я просто вызываю отчет ... – user299791

+0

Да, «отчет» также выйдет из всей процедуры. –