Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Import ve Export

BERK'te modüller arası kod paylaşımı kullan, içe_aktar ve dışa_aktar anahtar kelimeleri ile yapılır.

dışa_aktar (Export)

Temel Kullanım

dışa_aktar anahtar kelimesi, bir öğeyi diğer modüllerden erişilebilir yapar:

// Fonksiyon dışa aktarma
dışa_aktar fonksiyon topla(a: sayı, b: sayı) -> sayı yap
    dön a + b
son

// Sabit dışa aktarma
dışa_aktar sabit MAKSIMUM = 100

// Yapı dışa aktarma
dışa_aktar yapı Nokta yap
    x: sayı
    y: sayı
son

// Enum dışa aktarma
dışa_aktar enum Renk yap
    Kırmızı
    Yeşil
    Mavi
son

Grup Dışa Aktarma

// Birden fazla öğeyi birlikte dışa aktar
dışa_aktar { topla, çarp, böl, PI, Nokta };

// Veya tek tek
dışa_aktar fonksiyon topla(a: sayı, b: sayı) -> sayı yap dön a + b son
dışa_aktar fonksiyon çarp(a: sayı, b: sayı) -> sayı yap dön a * b son

Varsayılan Görünürlük

BERK'te varsayılan görünürlük özel (private)dir:

// Bu fonksiyon SADECE bu modülde kullanılabilir
fonksiyon dahili_fonksiyon() yap
    // özel kod
son

// Bu fonksiyon DİĞER modüllerden erişilebilir
dışa_aktar fonksiyon genel_fonksiyon() yap
    dahili_fonksiyon()  // Modül içinde kullanılabilir
son

kullan (Use) - Yerel Modüller

Basit İçe Aktarma

// Tek bir fonksiyon
kullan matematik::topla;

// Birden fazla öğe
kullan matematik::{topla, çarp, böl};

// Tüm dışa aktarılanlar
kullan matematik::*;

Alt Modül Kullanımı

// İç içe modül yolları
kullan matematik::geometri::alan;
kullan matematik::geometri::{alan, çevre, hacim};

// Modülün kendisini içe aktar
kullan matematik::geometri;
// Kullanımı: geometri::alan(5.0)

Takma Ad (Aliasing)

// Fonksiyon için takma ad
kullan matematik::topla olarak toplama;
kullan matematik::çarp olarak çarpım;

// Modül için takma ad
kullan matematik::geometri olarak geo;

// Kullanım
değişken sonuç = toplama(5, 10)
değişken alan = geo::daire_alanı(3.0)

içe_aktar (Import) - Harici Paketler

Harici Paket Kullanımı

içe_aktar harici paketleri projeye dahil eder:

// Tüm paketi içe aktar
içe_aktar "serde" olarak json;

// Belirli öğeleri içe aktar
içe_aktar "http"::{get, post, İstek};

// Versiyon belirterek
içe_aktar "json@1.0.5";

Paket Yapılandırması

berk.toml dosyasında bağımlılıklar:

[dependencies]
serde = "1.0"
http = "0.2"
json = { version = "1.0", features = ["preserve_order"] }

kullan vs içe_aktar

Özellikkullaniçe_aktar
KullanımYerel modüllerHarici paketler
KaynakProje içi dosyalarDışarıdan paketler
YolDosya sistemiPaket yöneticisi
Örnekkullan matematik::toplaiçe_aktar "serde"

Modül Yolu Örnekleri

Proje Yapısı

proje/
├── ana.berk
├── matematik/
│   ├── temel.berk
│   ├── geometri.berk
│   └── ileri/
│       ├── calculus.berk
│       └── linear.berk
└── io/
    └── dosya.berk

İçe Aktarma Örnekleri

// ana.berk içinde:

// Temel matematik fonksiyonları
kullan matematik::temel::{topla, çarp};

// Geometri modülünün tamamı
kullan matematik::geometri;

// İç içe modül
kullan matematik::ileri::calculus::türev;

// IO modülü
kullan io::dosya::{oku, yaz};

Re-export (Yeniden Dışa Aktarma)

Bir modül, başka bir modülden içe aktardığı öğeleri tekrar dışa aktarabilir:

// matematik/index.berk
kullan matematik::temel::topla;
kullan matematik::geometri::alan;

// Yeniden dışa aktar
dışa_aktar { topla, alan };
// ana.berk
kullan matematik::{topla, alan};  // Her ikisi de kullanılabilir

Wildcard Import

// Tüm dışa aktarılanları içe aktar
kullan matematik::*;

// Kullanım
değişken sonuç = topla(5, 10)  // matematik::topla çağrıldı

⚠️ Dikkat: Wildcard import isim çakışmalarına yol açabilir. Dikkatli kullanın!

Circular Dependencies (Döngüsel Bağımlılıklar)

BERK döngüsel bağımlılıklara izin vermez:

// ❌ YANLIŞ: A → B → A
// modül_a.berk
kullan modül_b;

// modül_b.berk
kullan modül_a;  // HATA: Döngüsel bağımlılık!

Çözüm: Ortak kodu üçüncü bir modüle taşıyın:

// ortak.berk
dışa_aktar fonksiyon paylaşılan() yap son

// modül_a.berk
kullan ortak;

// modül_b.berk
kullan ortak;

En İyi Uygulamalar

Açık İçe Aktarmalar

// ✅ İyi: Açık ve okunabilir
kullan matematik::{topla, çarp, PI};

// ❌ Kötü: Ne içe aktarıldığı belirsiz
kullan matematik::*;

Minimal Dışa Aktarma

// ✅ İyi: Sadece gerekli API
dışa_aktar fonksiyon işle() yap
    dahili_yardımcı()
son

fonksiyon dahili_yardımcı() yap
    // özel implementasyon
son

// ❌ Kötü: Gereksiz dışa aktarma
dışa_aktar fonksiyon dahili_yardımcı() yap son

Tutarlı İsimlendirme

// Modül isimleri: küçük harf, alt çizgi
matematik_ileri.berk
dosya_sistemi.berk

// Fonksiyon isimleri: küçük harf, alt çizgi
dışa_aktar fonksiyon hesaplama_yap() yap son

// Yapı/Enum isimleri: PascalCase
dışa_aktar yapı KullanıcıVerisi yap son

Özet

  • dışa_aktar: Öğeleri dışarıya açar
  • kullan: Yerel modüllerden içe aktarır
  • içe_aktar: Harici paketleri yükler
  • olarak: Takma ad oluşturur
  • ::: Modül yolu ayracı
  • *: Tüm öğeleri içe aktarır (dikkatli kullanın)
  • ❌ Döngüsel bağımlılıklardan kaçının
  • ✅ Açık içe aktarmaları tercih edin