2012-03-05 67 views

Trả lời

25

Sử dụng downto như trong:

for (n in 100 downTo 1) { 
// 
} 
+5

Tại sao nó không "cho (n trong 100..1)"? Nó không phải là một thỏa thuận rằng nếu số đầu tiên là lớn hơn thì một phạm vi đếm ngược? – x2bool

1

Nếu bạn nhìn vào trang chính xác mà bạn liên quan đến, có một gợi ý cho một hàm reversed mà có cho phép bạn làm for (n in (1..100).reversed()) nhưng có vẻ như chưa được triển khai. Toán tử .. luôn được tính.

+0

Tôi thấy nhận xét đó và hy vọng nó đã lỗi thời. – jjnguy

+0

@jjnguy hmm ... có lẽ vậy. Cam kết '86a33f8' (ngày 18 tháng 1 năm 2012) thêm các kiểm tra cho' for (n trong 100 downto 1) 'và' for (n in - (1..100)) 'cả hai đều có cùng ý nghĩa. Họ có làm việc cho bạn không? – hobbs

+3

- (1..100) không hoạt động nữa. Cú pháp chính xác là cho (n trong 100 downTo 1) –

6

Phạm vi đảo ngược được hỗ trợ bằng cách sử dụng toán tử trừ - đơn nhất như trong -(1..100).

Để gọi phương thức trên phạm vi đó, bạn sẽ cần phải bao quanh phương thức đó bằng dấu ngoặc đơn như trong (-(1..100)).foreach { println(it) }.

+4

Có khả năng nào làm cho hàm rangeTo() thông minh hơn một chút và xử lý tự động không? Có một phạm vi tiêu cực với tôi có nghĩa là đếm từ -1 đến -100. – jjnguy

+0

Tôi khuyên bạn nên xem xét các vấn đề sau liên quan đến phạm vi trong Kotlin và gửi một vấn đề mới giải thích chi tiết đề xuất của bạn: [KT-861] (http://youtrack.jetbrains.com/issue/KT-861) , [KT-1045] (http://youtrack.jetbrains.com/issue/KT-1045), [KT-1076] (http://youtrack.jetbrains.com/issue/KT-1076) –

2

Như đã chỉ bởi những người khác, câu trả lời đúng là

for (n in 100 downTo 1) { 
    println(n) 
} 

Nhưng tại sao Kotlin đội chọn 100 downTo 1 vs 100..1?

Tôi nghĩ rằng cú pháp 100..1 sẽ là xấu khi chúng tôi cố gắng sử dụng các biến thay vì chữ. Nếu chúng ta gõ

for (n in b..a)

sau đó nó sẽ không được rõ ràng những gì vòng lặp chúng tôi muốn sử dụng.

Chúng tôi có thể có ý định tính ngược lại nhưng nếu b trở thành nhỏ hơn a, thì chương trình của chúng tôi sẽ thực sự đếm ngược! Đó sẽ là một nguồn lỗi.

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