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
ReturnTypeolarakvoidbelirtilirse, fonksiyon hiçbir değer döndürmez. - Eğer bir tür belirtilirse (örneğin
u8),returnile 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()fonksiyonuu8türünde bir değer döndürür.main()fonksiyonu içinde bu fonksiyon çağrılır ve sonucuanswerdeğişkenine atanır.- Zig'de
pubanahtar 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çinpubgerekmez.
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:u8türünde bir parametre (0–255 arasında değer alabilir).is_lucky:booltüründe bir parametre (trueveyafalse).- Fonksiyon
voiddö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 u8slice (sabit uzunluktaki byte dizisi) parametresi alır.- Fonksiyon
voidolduğ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,@compileErrorgibi yerleşik Zig fonksiyonları mevcuttur.