2012-01-19 43 views
34

Tôi mới dùng ruby. muốn biết cách viết vòng lặp sau trong ruby.Cách viết vòng lặp âm trong ruby ​​như (i = index; i> = 0; i -)

var index=25; 

for (i = index; i >= 0; i--) { 
    print i; 
} 
+0

lưu ý rằng câu hỏi của bạn nên đọc 'for (i = index; i > = 0; i -) ' – KevinDTimm

+5

Nếu bạn mới sử dụng ruby, tại sao tiểu sử của bạn cho biết bạn có 5 năm kinh nghiệm về RoR? –

+0

Vâng đánh dấu :), tôi là một nhà phát triển php trước khi –

Trả lời

9

Hãy thử điều này:

25.downto(0) { |i| puts i } 
24

Một cách:

25.downto(0) do |i| 
    puts i 
end 
+0

Tôi đoán bạn đã tìm ra các phạm vi có thể không được sử dụng như thế này ;-) –

+0

Đó là câu trả lời của người khác, kể từ khi bị xóa. Nó sẽ không vượt qua tâm trí của tôi để sử dụng một phạm vi khi điều này là chính xác những gì 'downto' là cho. –

+0

Xin lỗi về điều đó. Tôi đã thích thú bởi câu trả lời, nhưng không nhớ tên :-) –

49

Có rất nhiều cách để thực hiện một vòng lặp decrementing trong Ruby:

cách đầu tiên:

for i in (10).downto(0) 
    puts i 
end 

cách thứ hai:

(10).downto(0) do |i| 
    puts i 
end 

Thứ ba cách:

i=10; 
until i<0 
    puts i 
    i-=1 
end 
+3

Cách thứ nhất chứa các dấu ngoặc không liên quan, và không phải là rất thành ngữ. Cách thứ 2 cũng chứa các parens không liên quan, có một 'each' không cần thiết, và có dấu ngoặc kép không cần thiết và nội suy biến đổi. Cách thứ ba chỉ đơn giản là bị hỏng. –

+0

@MarkThomas: Tôi nghĩ rằng các dấu ngoặc đơn không liên quan là làm cho nó có vẻ ít rắc rối với người dùng Ruby mới, như tôi. Trong Javascript, điều tương tự là có thể, nhưng bạn cần sử dụng hai dấu chấm (điểm kết thúc và trình truy cập thuộc tính): '65536..toExponential()'. Đó là một cách hơi ngượng ngùng khi cho phép truy cập tài sản, vì vậy tôi tưởng tượng ít nhất là không phổ biến để sử dụng hoặc thậm chí biết về các ngôn ngữ khác, nơi có thể truy cập trực tiếp các thuộc tính của một số bằng dấu chấm. –

12

downto là tốt, nhưng đó cũng là chung chung hơn step.

25.step(0, -1){|i| puts i} 
1

Chỉ trong trường hợp bạn đang làm việc với một loạt đã:

rng = 0..6 
rng.reverse_each { |i| p i } 
2

Dưới đây là một đơn giản nhất:

(0..25).reverse_each { |i| print i } 
+0

Không hoạt động, phạm vi không giảm. – steenslag

+0

@steenslag Có vẻ như bạn đã đúng. Đang sửa. – edgerunner

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