while true
puts "a"
while true
puts "b"
x = gets
break if x == "1"
end
end
Więcej defakto nie jest potrzebne. Powyższy przykład oczywiście mogę zrealizować poprzez wstawienie warunku do while, ale nie chcę tego robić w ten sposób. Teraz mam problem, gdyż program nie chce wyjść z drugiej pętli, pomimo podania liczby 1 w gets. Wychodzenie z pętli głównej nie stanowi problemu, natomiast gorzej z wychodzeniem z pętli zagnieżdżonej. Jedyne co działa to return, ale return wychodzi z obu pętli, a ja chcę tylko z tej zagnieżdżonej… I winą nie jest sam warunek, tylko to nieszczęsne “break”.
Nie, gets.chomp też próbowałem. Mówię, że problem nie leży w warunku, bo sam warunek wydzieliłem i sprawdzałem i działa - jeśli zamiast break, dam np. "puts “ok” " to ok się pokazuje, ale jak już jest “break” to za chiny nie chce wyjść z pętli zagnieżdżonej. I dlatego też dałem “puts” na początku pętli nadrzędnej, żeby sprawdzić, czy może po wykonaniu instrukcji break wychodzi z pętli zagnieżdżonej i od nowa wykonuje pętlę nadrzędną. Ale tak nie jest.
while true
puts "a"
while true
puts "b"
x = gets.chomp
break if x == "1"
end
end
Works on my machine. Break wychodzi z pętli „b”, wyświetla „a” i znowu wchodzi do pętli wewnętrznej.
Rozumiem, że jest to przykład jakiegoś rozwiązania, a nie rzeczywiście używany kod. W każdym razie, break rzeczywiście wyskakuje tylko z jednej pętli. Jeżeli chcesz wyskoczyć z dwóch, druga pętla też musi sprawdzić jakiś warunek. Ponieważ nie ma sensu przepisywać właściwego warunku dwa razy, pętla wewnętrzna może ustawić jakąś zmienną logiczną i wyskoczyć, a druga pętla też zawsze tę zmienną sprawdza i wyskakuje w razie czego.
Eej, to nie fair! Jak miałeś, to dlaczego nie pokazałeś? Co, to jest - ludzie sobie głowy łamią, wymyślają co też tam mogło być pominięte, a potem się dowiadują, że “tak, było ale nie pokazałem”.
No patrz, ale szare komórki rozwijasz Mam nawyk nie pokazywania swojego kodu w formie jakiej jest, bo już wiele razy miałem problem, że właśnie pisali z prośbą o przykład, bo z całego kodu czasem ciężko się odczytać A byłem prawie pewien, że to winą jest break, więc zamieściłem tylko tą część kodu w formie przykładu
No nie obrażaj mnie, chodziło o problemy w dużo dużo bardziej rozbudowanych kodach i dlatego zawsze ludzie prosili o przykład… z tymże to ja byłem po stronie pomagającej zazwyczaj, acz to nie ja prosiłem o przykład. Oj, nieważne, na przyszłość będę wam wrzucał oryginały. Z drugiej strony dobrze, bo w ten sposób sam doszedłem do rozwiązania problemu