2016-03-01 17 views
5

Próbowałem zrobić prostą jedną linijkę, podczas gdy pętla w rubinie za pomocą nawiasów klamrowych. Byłem udanych w następujących formatach:Jak zrobić jednolinijkową pętlę w Ruby używając nawiasów klamrowych

while x < 5 do x+=1 end 

To wystarczy jako jedną wkładką ale im nie jest fanem używając zrobić koniec w jednej wkładki. Chciałbym zrobić coś podobnego:

while x < 5 { x += 1 } 

Czy to można zrobić?

+1

Zakładam, że jest to ponad uproszczony sposób na to pytanie, ale nie wierzę, keyw ords jak 'while',' for', itp. akceptują składnię bloków. Mając to na uwadze, używając metod 'Wymienialnych', zrób coś takiego jak' (x ... 5) .each {x + = 1} 'da taki sam rezultat. – engineersmnky

Odpowiedz

11

Co z tego:

x = 0 
x += 1 while x < 5 
x 
#=> 5 
+1

To brzmi naprawdę dobrze. 'x + = 1 do x == 5' to kolejna opcja. Preferuję 'while'', ale' until' zasługuje na wzmiankę. –

1

zamiast tego:

x = 0 
while x < 5 do 
    puts x 
    x += 1 
end 

można napisać tak:

5.times { |i| puts i } 
4

Jeśli pytanie brzmi „Jak używać while z kręcone nawiasy klamrowe? Czy można to zrobić? ", wtedy odpowiedź brzmi: Nie, nie jest to możliwe.

Zamiast tego można użyć podczas zrobić ... bez końca, a bez nawiasów klamrowych:

x = 0 
(x+=1; p x) while x<5 

Albo można użyć nawiasy klamrowe bez while, aby osiągnąć ten sam :

x=0 
(x+1..5).each{|y| p y} 
+0

Jednak te dwa są różne, ponieważ radzą sobie z różnymi regułami ustalania zakresu. Zmienne utworzone w 'pętli' while 'będą widoczne dla zewnętrznych zakresów. To samo nie dotyczy, powiedz "każdy" blokuje. – yeyo

Powiązane problemy