Crystal El Kitabı
  • Crystal El Kitabı: Sadelik ve Güç Bir Arada
  • Bölüm 1: Başlangıç
  • Bölüm 2: Crystal Dilinin Temelleri
  • Bölüm 3: Nesne Yönelimli Programlama (OOP)
  • Bölüm 4: Fonksiyonel Programlama
  • Bölüm 5: Gelişmiş Konular
  • Bölüm 6: Crystal ile Web Geliştirme
  • Bölüm 7: Crystal ile Proje Yönetimi ve Paket Yönetimi
  • Bölüm 8: Test Yazma ve Hata Ayıklama
  • Bölüm 9: Gerçek Dünya Projeleri
  • Ekler
  • Teşekkürler
  • Bana Ulaşın
Powered by GitBook
On this page

Bölüm 5: Gelişmiş Konular

Bu bölümde, Crystal dilinin daha ileri seviye konularını inceleyeceğiz. Özellikle, metaprogramlama ve makrolar konularına vurgu yaparak, bu özelliklerin Ruby dilinde nasıl işlediğiyle olan benzerliklerine dikkat çekeceğiz.

5.1 Makrolar

Crystal dilinde makrolar, derleme sırasında kod üretmeyi sağlar. Bu, kodunuzun daha genişleyebilir ve uyumlu olmasına olanak tanır.

macro selamla(isim)
  puts "Merhaba #{isim}"
end

isim = "Serdar"
selamla(isim) # Derleme zamanında "Merhaba Serdar" olarak çıktı verir.

5.2 Metaprogramlama (Metaprogramming)

Metaprogramlama, programın kendi kendini değiştirmesi veya genişletmesi için kullanılır. Ruby'de bu, dinamik olarak yeni yöntemler eklemek veya sınıfın yapısını değiştirmek için sıkça kullanılır. Crystal'de, bu tür işlemler için genellikle makrolar kullanılır.

Ruby'de define_method veya method_missing gibi yöntemlerle metaprogramlama yapabilirken, Crystal'de bu işlevselliği makrolar üzerinden sağlamaktadır.

5.3 Durumsal Derleme (Conditional Compilation)

Crystal, derleme sırasında belirli kod parçalarını dahil etme veya hariç bırakma yeteneği sunar. Bu, platforma özgü kodu etkili bir şekilde yönetmek için kullanılabilir.


<div data-gb-custom-block data-tag="if"></div>

  puts "Bu Linux için bir kod!"

<div data-gb-custom-block data-tag="elsif"></div>

  puts "Bu macOS için bir kod!"

</div>

5.4 Refleksiyon ve Anotasyonlar (Reflection and Annotations)

Crystal'de refleksiyon, bir nesnenin kendi yapısını ve özelliklerini sorgulamasına olanak tanır. Anotasyonlar ise, metaveri eklemek için kullanılır ve bu bilgileri refleksiyon yoluyla sorgulayabilirsiniz.

@[Anotasyon("bilgi")]
class Ornek
end

puts Ornek.annotations(Anotasyon) # => [{ "bilgi" => "bilgi" }]

Ruby'de de benzer şekillerde refleksiyon ve metaprogramlama kullanılmaktadır.

5.5 Sonuç

Bu bölümde, Crystal'in gelişmiş konularına genel bir bakış attık. Özellikle, metaprogramlama konusundaki benzerlikler, Ruby'den gelen geliştiricilere Crystal'de daha hızlı adapte olma fırsatı sunabilir. Makro ve metaprogramlama, Crystal'in gücünü ve esnekliğini ortaya koyan özelliklerdendir ve bu özellikleri efektif bir şekilde kullanmak, geliştiricinin elinde büyük bir avantajdır.

PreviousBölüm 4: Fonksiyonel ProgramlamaNextBölüm 6: Crystal ile Web Geliştirme

Last updated 1 year ago