Published on

Swiftda Ranges

Authors

Swiftda range (oralik) โ€” bu ikki son oraligโ€˜idagi qiymatlar ketma-ketligi. Masalan:

var numbers = 1...4

Bu yerda:

  • ... โ€” range operatori
  • 1...4 โ€” qiymatlar: 1, 2, 3, 4
  • 1 โ€” pastki chegarasi (birinchi qiymat)
  • 4 โ€” yuqori chegarasi (oxirgi qiymat)

Range turlari

Swiftda rangening uch turi mavjud:

  1. Yopiq range (Closed Range)
  2. Yarim ochiq range (Half-Open Range)
  3. Bir tomonlama range (One-Sided Range)

1. Yopiq Range (Closed Range)

Yopiq range pastki chegara va yuqori chegaraning ikkalasini ham oโ€˜z ichiga oladi.

U ... (3 nuqta) operatori bilan yaratiladi.

// 1...4 โ€” yopiq range
for numbers in 1...4 {
  print(numbers)
}

Natija:

1
2
3
4

Bu yerda 1...4 yopiq range boโ€˜lgani uchun:

  • 1 dan boshlanadi
  • 4 bilan tugaydi
  • Har ikki chegara ham kiradi

2. Yarim ochiq range (Half-Open Range)

Bu rangeda pastki chegara kiradi, ammo yuqori chegara kirmaydi.

..< operatori bilan yaratiladi.

for numbers in 1..<4 {
  print(numbers)
}

Natija:

1
2
3

Bu yerda 1..<4 โ€” 4 kirmaydi.

3. Bir tomonlama Range (One-Sided Range)

Bir tomonlama range yaratishda ... yoki ..< ishlatiladi.

Bunda range cheksizlikka tomon davom etadi.

let range1 = ..<2

Bu yerda:

  • ..<2 โ€” 2 gacha boโ€˜lgan barcha qiymatlar (โˆ’โˆž dan 2 gacha)

Yana bir misol:

let range2 = 2...

Bu:

  • 2... โ€” 2 dan boshlab +โˆž gacha davom etadi

Endi range ichida son borligini tekshirish:

// ..< operatori bilan yaratilgan bir tomonlama range
let range1 = ..<2

// -1 range ichidami?
print(range1.contains(-1))

// ... operatori bilan yaratilgan bir tomonlama range
let range2 = 2...

// 33 range ichidami?
print(range2.contains(33))

Natija:

true
true

Bu yerda contains() yordamida range ichida son borligi tekshirildi.

Bir tomonlama rangeda faqat bitta chegara beriladi.

Swiftda Range yordamida Array elementlarini olish

Range massiv elementlariga murojaat qilishda ham ishlatiladi.

let languages = ["Swift", "Java", "C"]

// massiv elementlariga murojaat
print(languages[0...2])

Natija:

["Swift", "Java", "C"]

Bu yerda 0...2 โ€” indexlar oraligโ€˜i boโ€˜lib, barcha elementlarni olmoqda.

Range haqida esda qoladigan jihatlar

  1. Pastki chegara yuqori chegaradan kichik boโ€˜lishi shart.

Notoโ€˜gโ€˜ri:

3...1

Toโ€˜gโ€˜ri:

1...3
  1. Chegaralar manfiy boโ€˜lishi mumkin.

Misollar:

// manfiy pastki chegara
-3...1

// har ikki chegara manfiy
-9...-2