Published on

Swiftda Ranges

Authors

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

Swift
Range yaratish
var numbers = 1...4 print("Range:", numbers) print("Turi:", type(of: numbers))

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.

Swift
Yopiq Range
// 1...4 β€” yopiq range for numbers in 1...4 { print(numbers) }

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.

Swift
Yarim ochiq Range
for numbers in 1..<4 { print(numbers) }

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.

Endi range ichida son borligini tekshirish:

Swift
Bir tomonlama Range
// ..< operatori bilan yaratilgan bir tomonlama range let range1 = ..<2 // -1 range ichidami? print("-1 range1 da:", range1.contains(-1)) // ... operatori bilan yaratilgan bir tomonlama range let range2 = 2... // 33 range ichidami? print("33 range2 da:", range2.contains(33))

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.

Swift
Range bilan Array elementlari
let languages = ["Swift", "Java", "C"] // massiv elementlariga murojaat print(languages[0...2])

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  // Xato!

To'g'ri:

1...3
  1. Chegaralar manfiy bo'lishi mumkin.
Swift
Manfiy chegaralar
// manfiy pastki chegara let range1 = -3...1 print("Range1:", Array(range1)) // har ikki chegara manfiy let range2 = -9 ... -5 print("Range2:", Array(range2))

Birinchi masalaning yechimi

Keling, birinchi masala "Range yig'indisi" ni birga yechib ko'ramiz:

1-qadam: Masalani tushunish

  • a = 1, b = 5 β†’ 1 + 2 + 3 + 4 + 5 = 15
  • a = 3, b = 7 β†’ 3 + 4 + 5 + 6 + 7 = 25

2-qadam: Yechim algoritmi

  1. a...b range yaratamiz
  2. for loop bilan yig'indini hisoblaymiz
  3. Natijani qaytaramiz

3-qadam: Kodni yozamiz

Swift
Range yig'indisi yechimi
func rangeSum(a: Int, b: Int) -> Int { var sum = 0 for num in a...b { sum += num } return sum } // Test print(rangeSum(a: 1, b: 5)) // 15 print(rangeSum(a: 3, b: 7)) // 25 print(rangeSum(a: -2, b: 2)) // 0

Alternativ yechim (reduce bilan):

Swift
Range yig'indisi (reduce)
func rangeSum(a: Int, b: Int) -> Int { return (a...b).reduce(0, +) } print(rangeSum(a: 1, b: 5)) // 15

Natija: Range orqali oraliq yig'indisini osonlik bilan hisobladik.

Buy mea coffee