Zig Dilinde Fonksiyonlar (Functions in Zig)
Fonksiyonlar, Zig dilinde tekrar kullanılabilir kod blokları yazmak için kullanılır. Bu yazıda fonksiyonların nasıl tanımlandığını, çağrıldığını ve parametrelerle nasıl çalıştığını örneklerle göreceğiz.
Zig'de Fonksiyon Tanımlama
Zig’de bir fonksiyon aşağıdaki temel yapı ile tanımlanır:
fn functionName(parameterList) ReturnType {
// fonksiyon gövdesi
}
fn
: Fonksiyon bildirimi için kullanılır.functionName
: Fonksiyonun adı.parameterList
: Fonksiyona giren parametreler (boş da olabilir).ReturnType
: Fonksiyonun geri döndürdüğü veri tipi.
Not:
- Eğer
ReturnType
olarakvoid
belirtilirse, fonksiyon hiçbir değer döndürmez. - Eğer bir tür belirtilirse (örneğin
u8
),return
ile bu türde bir değer döndürülmelidir.
Fonksiyon Döndürme Örneği
const std = @import("std");
pub fn main() void {
const answer: u8 = deepThought();
std.debug.print("Answer to the Ultimate Question: {}\n", .{answer});
}
fn deepThought() u8 {
return 42; // Number courtesy Douglas Adams
}
Açıklama:
deepThought()
fonksiyonuu8
türünde bir değer döndürür.main()
fonksiyonu içinde bu fonksiyon çağrılır ve sonucuanswer
değişkenine atanır.- Zig'de
pub
anahtar kelimesi dışa açık yapılarda (örneğin modüller arasında) kullanılır. AncakdeepThought()
fonksiyonu yalnızca aynı dosya içinde çağrıldığı içinpub
gerekmez.
Fonksiyon Parametreleri
Fonksiyonlar parametre alabilir. Zig’de parametreler isim ve veri tipi ile birlikte tanımlanır:
fn myFunction(number: u8, is_lucky: bool) void {
// işlem kodları
}
Açıklama:
number
:u8
türünde bir parametre (0–255 arasında değer alabilir).is_lucky
:bool
türünde bir parametre (true
veyafalse
).- Fonksiyon
void
döndürdüğü için geriye değer döndürmesi gerekmez.
Örnek: Parametre Alan Fonksiyon
const std = @import("std");
fn greet(name: []const u8) void {
std.debug.print("Hello, {}!\n", .{name});
}
pub fn main() void {
greet("Zig Developer");
}
Çıktı:
Hello, Zig Developer!
Bu örnekte:
greet()
fonksiyonu bir[]const u8
slice (sabit uzunluktaki byte dizisi) parametresi alır.- Fonksiyon
void
olduğu için sadece bir mesaj yazdırır, değer döndürmez.
Özet
Konsept | Açıklama |
---|---|
fn |
Fonksiyon tanımı |
return |
Değer döndürme komutu |
void |
Fonksiyon bir değer döndürmüyorsa |
Parametre yazımı | param_adı: veri_tipi şeklinde |
Fonksiyon çağırma | functionName() şeklinde |
Ekstra Bilgiler
- Fonksiyonlar başka fonksiyonlardan çağrılabilir.
- Parametrelerin sırası önemlidir.
- Fonksiyonlar blok içinde tanımlanabilir (iç içe fonksiyonlar).
@import
,@intCast
,@compileError
gibi yerleşik Zig fonksiyonları mevcuttur.