Darsliklar Ruby Massiv

Ruby Ruby Massiv

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.

Arrayelementlari 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].length3
.first / .last birinchi/oxirgi [1,2,3].first1
.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.