gokayburuc.dev

Zig'de `pub fn` Kullanımı

Zig ile çalışırken bir dosyada yazdığım fonksiyona başka bir dosyadan erişmem gerekti. Bunu mümkün kılan yapı pub fn.


pub fn Nedir?

Zig'de fonksiyonlar varsayılan olarak sadece tanımlandıkları dosyada erişilebilirdir. Eğer bir fonksiyonun diğer dosyalardan da çağrılmasını istiyorsam, onu pub ile tanımlamam gerekir.

pub fn main() void {
    // kod
}

pub, fonksiyonun dış dünyaya açık olduğunu belirtir.


Dosya Yapısı

Projede iki dosya kullandım:

.
├── greeting.zig
└── main.zig

greeting.zig: Fonksiyon Tanımı

Bu dosyada bir selamlama fonksiyonu yazdım ve pub ile erişilebilir hale getirdim:

const std = @import("std");
const print = std.debug.print;

pub fn greet() void {
    print("Hello User\n", .{});
}

main.zig: Fonksiyonu Kullanmak

greeting.zig dosyasındaki fonksiyonu bu şekilde çağırdım:

const std = @import("std");
const greetings = @import("greeting.zig");

pub fn main() !void {
    greetings.greet();
}

@import("greeting.zig") ile fonksiyonu içeri aldım ve greetings.greet() ile çağırdım.


Çalıştırma

Programı terminalde şu komutla çalıştırdım:

zig run main.zig

Sonuç

pub fn, Zig'de fonksiyonların farklı dosyalar arasında paylaşılmasına olanak tanıyor. Modüler yapı kurarken vazgeçilmez bir özellik.

#zig