Skip to content
This repository has been archived by the owner on Jun 16, 2021. It is now read-only.

Latest commit

 

History

History
59 lines (47 loc) · 1.49 KB

uniq_collection.md

File metadata and controls

59 lines (47 loc) · 1.49 KB
author(s)
Recai Oktaş (@roktas)

UniqCollection

Collection sınıfından miras alan bu sınıfın atasından tek farkı içteki dizinin bir Set olarak tutulmasıdır. Bu sayede dizide tekrar eden ögeler bulunmaz ve Set ile gelen ilave özelliklere de sahip olursunuz.

Sınıfın Structure ile birlikte kullanımını örneklemek için aşağıdaki içerikte bir units.yml dosyasını göz önüne alın.

- name: Mühendislik Fakültesi
  abbreviation: MÜHENDİSLİK
  yoksis_id: 122183
  unit_type_id: Fakülte

- name: Bilgisayar Mühendisliği Bölümü
  abbreviation: BİLGİSAYAR
  yoksis_id: 122184
  unit_type_id: Bölüm

Bu dosyadan hareketle her biri Unit nesnesi olan bir Units kolleksiyonu oluşturmak için:

class Unit
  include Structure.of %i[
    name
    abbreviation
    yoksis_id
    unit_type_id
  ]

  def faculty?
    unit_type_id == 'Fakülte'
  end
end

units = Units.read_from_yaml_file('units.yml')
units.classify { |unit| unit.unit_type_id } # birim türüne göre grupla

Görüldüğü gibi Set sayesinde kolleksiyonda kolaylıkla sınıflama yapılabilmektedir. Örneklenen read_from_yaml_file sınıf metoduna ilave olarak bir kolleksiyonu YAML dosyaya yazmak için write_to_yaml_file sınıf metodunu kullanabilirsiniz.

units = Units.read_from_yaml_file('units.yml')
units.second.unit_type_id = 'Fakülte'

Units.write_to_yaml_file('units_updated.yml', units, comment: 'Güncellenen dosya')