2016-03-01 15 views
5

Tôi đã cố gắng để làm một lớp lót đơn giản trong khi vòng lặp trong ruby ​​bằng cách sử dụng dấu ngoặc nhọn. Tôi đã thành công ở các định dạng sau:Làm thế nào để làm một lót trong khi vòng lặp trong Ruby sử dụng dấu ngoặc nhọn

while x < 5 do x+=1 end 

Điều này đủ cho một lớp lót nhưng không phải là quạt sử dụng kết thúc trong một lớp lót. Tôi muốn làm điều gì đó tương tự như thế này:

while x < 5 { x += 1 } 

Điều này có thể thực hiện được không?

+1

Tôi giả định điều này đơn giản hơn cho các phương tiện của câu hỏi này nhưng tôi không tin keyw ords như 'while',' for', v.v. chấp nhận cú pháp khối. Điều đó đang được nói bằng cách sử dụng 'Enumerable' phương pháp làm như vậy một cái gì đó như' (x ... 5) .each {x + = 1} 'sẽ cung cấp kết quả tương tự. – engineersmnky

Trả lời

11

gì về điều này một:

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

Điều đó thực sự tốt. 'x + = 1 cho đến x == 5' là một tùy chọn khác. Tôi thích 'while', nhưng' until' đáng được đề cập đến. –

1

Thay vì điều này:

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

bạn có thể viết này:

5.times { |i| puts i } 
4

Nếu câu hỏi là "Làm thế nào để sử dụng while với xoăn niềng răng? Nó có thể được thực hiện? ", sau đó câu trả lời là: Không, nó không phải là có thể.

Thay vào đó, bạn có thể sử dụng khi mà không làm ... kết thúc, và mà không cần dấu ngoặc nhọn:

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

Hoặc bạn có thể sử dụng dấu ngoặc nhọn không khi, để đạt được cùng :

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

Mặc dù, hai điều này là khác nhau, như trong chúng xử lý các quy tắc phạm vi khác nhau. Các biến được tạo bên trong 'vòng lặp while' sẽ hiển thị với phạm vi bên ngoài. Điều tương tự cũng không áp dụng cho, nói 'từng khối'. – yeyo

Các vấn đề liên quan