UPDATE 2: Đối với hậu thế, đây là cách tôi đã giải quyết trên làm việc đó (nhờ đầu vào Jorg của):Tuyên bố một dãy số nguyên với bước = 1 trong Ruby
100.step(2, -2) do |x|
# my code
end
(Rõ ràng là có rất nhiều cách để làm điều này, nhưng có vẻ như đây là "Ruby" cách nhất để làm điều đó, và đó chính xác là những gì tôi đã sau)
CẬP NHẬT:. OK, vì vậy những gì tôi đang tìm kiếm cho là step
:
(2..100).step(2) do |x|
# my code
end
Nhưng hóa ra tôi không đạt 100% trong câu hỏi ban đầu. Tôi thực sự muốn lặp lại trên phạm vi này ngược. Trước sự ngạc nhiên của tôi, một bước tiêu cực không hợp pháp.
(100..2).step(-2) do |x|
# ArgumentError: step can't be negative
end
Vì vậy: làm cách nào để làm điều này ngược?
Hey guys, tôi hoàn toàn mới để Ruby, vì vậy hãy nhẹ nhàng.
Giả sử tôi muốn lặp qua phạm vi số chẵn từ 2 đến 100; làm thế nào tôi sẽ làm điều đó?
Rõ ràng là tôi thể làm:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
Nhưng, rõ ràng (một lần nữa), đó sẽ là khá ngu ngốc.
Tôi biết tôi có thể làm một cái gì đó như: (?)
i = 2
while i <= 100
# my code
i += 2
end
Tôi tin rằng tôi cũng có thể viết lớp tùy chỉnh của riêng tôi cung cấp each
phương pháp riêng của mình. Tôi gần như chắc chắn rằng sẽ là overkill, mặc dù.
Tôi quan tâm đến hai điều:
- Có thể để làm điều này với một số biến thể của cú pháp Phạm vi tiêu chuẩn (ví dụ:
(x..y).each
)? - Dù bằng cách nào, điều gì sẽ là "cách Ruby" thành ngữ nhất để hoàn thành việc này (sử dụng Phạm vi hoặc cách khác)? Như tôi đã nói, tôi mới học ngôn ngữ; vì vậy bất kỳ hướng dẫn nào bạn có thể cung cấp về cách làm mọi thứ theo phong cách Ruby điển hình hơn sẽ được đánh giá cao.
Rất đẹp. Chính xác những gì tôi cần - và cảm ơn cũng vì đã làm rõ thuật ngữ của tôi. Đã xóa rất nhiều! –
@ Jörg bất kỳ ý tưởng làm thế nào bạn đã kết thúc với tuyên bố cuối cùng? Các tài liệu cho bước đề cập đến chỉ có một đối số, vì vậy tôi đã tự hỏi làm thế nào bạn làm việc theo cách của bạn để cách gọn gàng của giải quyết vấn đề này. –
@n_x_l: Tôi không chắc bạn đang xem tài liệu nào, tham số 'bước' là [được ghi rõ ràng] (http://Ruby-Doc.Org/core-2.1.1/Numeric.html#method-i -bậc thang). Các tài liệu lâu đời nhất mà tôi có thể tìm thấy là những tài liệu dành cho Ruby 1.8.6 và nó [đã có sẵn] (http://Ruby-Doc.Org/core-1.8.6/Numeric.html#method-i-step) trở lại sau đó trong năm 2007. –