อัปเดตสำหรับ Swift 3 ล่าสุด (ยังใช้งานได้ใน Swift 4)
คุณสามารถใช้reversed()
วิธีการในช่วง
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
หรือstride(from:through:by:)
วิธีการ
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
คล้ายกัน แต่ไม่รวมค่าสุดท้าย
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
อัปเดตสำหรับ Swift 2 ล่าสุด
ก่อนอื่นส่วนขยายโปรโตคอลจะเปลี่ยนวิธีการreverse
ใช้งาน:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride ได้รับการปรับปรุงใหม่ใน Xcode 7 Beta 6 การใช้งานใหม่คือ:
for i in 0.stride(to: -8, by: -2) { print(i) } // 0 -2 -4 -6
for i in 0.stride(through: -8, by: -2) { print(i) } // 0 -2 -4 -6 -8
นอกจากนี้ยังใช้ได้กับDoubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
ระวังจุดลอยตัวเปรียบเทียบที่นี่สำหรับขอบเขต
การแก้ไขก่อนหน้านี้สำหรับ Swift 1.2 : ตั้งแต่ Xcode 6 Beta 4 โดยและReverseRangeไม่มีอยู่อีกต่อไป: [
หากคุณต้องการย้อนกลับช่วงฟังก์ชันย้อนกลับคือสิ่งที่คุณต้องการ:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
ตามที่โพสต์โดย0x7fffffffมีโครงสร้างก้าวใหม่ที่สามารถใช้เพื่อทำซ้ำและเพิ่มขึ้นโดยพลการจำนวนเต็ม Apple ยังระบุด้วยว่าการสนับสนุนจุดลอยตัวกำลังจะมาถึง
มาจากคำตอบของเขา:
for x in stride(from: 0, through: -8, by: -2) {
println(x) // 0, -2, -4, -6, -8
}
for x in stride(from: 6, to: -2, by: -4) {
println(x) // 6, 2
}