Junior
Ruby'de modüller ne için kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Ruby'de modüller iki ana amaç için kullanılır:
-
Namespaces (İsim alanları): Kodun düzenlenmesi, isim çatışmalarını önlemek için. İlgili sınıflar, metodlar ve sabitleri tek bir isim altında gruplayarak karışıklığı engeller. Bu, iki farklı sınıf veya metodun aynı isme sahip olmasını önler.
# module_for_namespace.rb module BenFramework class Doğrulayıcı def doğrula(veri) # doğrulama mantığı end end end # başka_bir_dosya.rb # BenFramework'ten Doğrulayıcı'yı kullanmak için: doğrulayıcı = BenFramework::Doğrulayıcı.new doğrulayıcı.dogrula("bazı veriler") -
Mixins (Karışımlar): Birden fazla sınıf arasında fonksiyonellik (metodlar) paylaşmak için mekanizma. Modüller,
includeveyaprependkullanılarak sınıflara dahil edilir.include: Modül metodları, sınıf örneklerinde kullanılabilir ve sınıf içinde yeniden tanımlanabilir. Metod arama sırası: mevcut sınıf, dahil edilen modül, üst sınıflar.prepend: Modülü, sınıfın önüne yerleştirir. Modül metodları, sınıf metodlarından önceliklidir.
includekullanım örneği:# mixin_module.rb module Loggable def log(mesaj) puts "[LOG] #{mesaj}" end end # class_using_mixin.rb class BenimClass include Loggable # Loggable modülünü dahil et def veri_isleme log("Veri işleniyor...") # Modülden metod kullan # diğer işlemler end end nesne = BenimClass.new nesne.veri_islemeprependkullanımı örneği:# mixin_module.rb module BenimPrependModülüm def selamla puts "Modülden merhaba!" end end # class_with_prepend.rb class BenimPrependClass prepend BenimPrependModülüm # Modül, sınıfın önünde yer alır def selamla puts "Sınıftan merhaba!" end end nesne = BenimPrependClass.new nesne.selamla # "Modülden merhaba!" yazdırır, çünkü modüldeki metod önceliklidir
Modüller örneklenemez (nesne oluşturulamaz) ve sınıflar gibi kalıtım zinciri yoktur.