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.

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.