Massiv (Array) — tartiblangan, indeks bo’yicha kirish mumkin bo’lgan ma’lumot to’plami. Ruby’da massiv istalgan turdagi qiymatlarni, hatto bir vaqtning o’zida turlicha ham, o’zida saqlay oladi.
Array — elementlari nol (0)dan boshlab indekslangan, o’zgaruvchan (mutable), tartiblangan to’plam klassi.
Massiv yaratish va elementga murojaat
Massiv kvadrat qavs ichida, vergul bilan ajratilgan qiymatlar orqali yaratiladi:
mahsulotlar = ["telefon", "noutbuk", "smart soat"]
puts mahsulotlar[0]
puts mahsulotlar[2]
puts mahsulotlar[-1]
telefon
smart soat
smart soat
Indekslash 0dan boshlanadi. Manfiy indeks oxiridan hisoblaydi — -1 doim oxirgi elementni bildiradi. Bu, uzunlikni bilmasdan oxirgi elementga murojaat qilishda qulay.
Element qo’shish va o’chirish
Massiv o’zgaruvchan bo’lgani uchun uni joyida kengaytirish yoki qisqartirish mumkin:
sonlar = [1, 2, 3]
sonlar.push(4)
sonlar << 5
chiqarilgan = sonlar.pop
puts sonlar.inspect
puts chiqarilgan
[1, 2, 3, 4]
5
push va << oxiriga element qo’shadi (ikkalasi bir xil ishlaydi, << qisqaroq yozuv). pop esa oxirgi elementni massivdan olib tashlaydi va uni qaytaradi — shu sabab sonlar endi 5siz qoldi ([1, 2, 3, 4]), o’chirilgan qiymatning o’zi esa chiqarilganda saqlanib qoldi. inspect (yoki p) massivni butun ko’rinishida chop etadi.
Foydali massiv metodlari
Massiv ustida ishlashning eng ko’p qo’llaniladigan metodlari:
| Metod | Vazifasi | Misol |
|---|---|---|
.length |
elementlar soni | [1,2,3].length → 3 |
.first / .last |
birinchi/oxirgi | [1,2,3].first → 1 |
.include? |
tarkibida bormi | [1,2,3].include?(2) → true |
.sort |
saralangan nusxa | [3,1,2].sort → [1,2,3] |
.reverse |
teskari tartib | [1,2,3].reverse → [3,2,1] |
.uniq |
takrorlarsiz nusxa | [1,1,2].uniq → [1,2] |
baholar = [7, 9, 5, 9, 8]
puts baholar.sort.inspect
puts baholar.max
puts baholar.sum
[5, 7, 8, 9, 9]
9
38
max — eng katta qiymat, sum — barcha elementlar yig’indisi. Bu metodlar massiv ustida sikl yozmasdan, bir qatorda natija berish imkonini beradi.
Kesib olish (slicing)
Massivning bir qismini indeks oralig’i orqali ajratib olish mumkin:
harflar = ["a", "b", "c", "d", "e"]
puts harflar[1, 3].inspect
puts harflar[1..3].inspect
puts harflar[0..-2].inspect
["b", "c", "d"]
["b", "c", "d"]
["a", "b", "c", "d"]
[1, 3] — 1-indeksdan boshlab 3 ta element. [1..3] — 1 dan 3-indeksgacha (ikkalasi ham qamrab olingan holda) oraliq. Ikkinchi shakl keyingi darsda ko’radigan Range klassiga asoslangan.