Zig'de `for` Döngüsü (For Loop)
Zig dilinde for döngüsü, diziler veya slice'lar üzerinde yineleme (iteration) yapmak için güçlü ve sade bir yapıdır. Bu makalede Zig'de for döngüsünün sözdizimi, temel kullanımı, indeksli versiyonu ve örnekleri yer alır.
for Döngüsü Sözdizimi (Syntax)
Zig'de for döngüsü aşağıdaki genel yapıyla kullanılır:
for (koleksiyon) |öğe| {
// işlem yapılacak kod
}
Veya indeksli kullanım:
for (koleksiyon, 0..) |öğe, indeks| {
// işlem yapılacak kod
}
koleksiyon: Bir dizi ([N]T), slice ([]T), veya iterable bir yapı olabilir.|öğe|: Her döngü turunda alınan eleman.|öğe, indeks|: Hem eleman hem de indeks birlikte alınır.0..: İndekslerin başlangıç aralığını belirtir (genelde sıfırdan başlanır).
Basit for Döngüsü Kullanımı
Aşağıdaki örnekte, bir karakter dizisi üzerinden geçerek her karaktere karşılık gelen yüz ifadesi basılır:
const std = @import("std");
pub fn main() void {
const story = [_]u8{ 'h', 'h', 's', 'n', 'h' };
std.debug.print("A Dramatic Story: ", .{});
for (story) |scene| {
if (scene == 'h') std.debug.print(":-) ", .{});
if (scene == 's') std.debug.print(":-( ", .{});
if (scene == 'n') std.debug.print(":-| ", .{});
}
std.debug.print("The End.\n", .{});
}
Açıklama:
story: Bir karakter dizisi.- Her karakter
sceneolarak alınır. - Farklı karakterler için farklı yüz ifadeleri yazdırılır.
Çıktı:
A Dramatic Story: :-) :-) :-( :-| :-) The End.
İndeksli for Döngüsü Kullanımı
İndeksli for döngüsü, elemanla birlikte dizideki konumunu da elde etmenizi sağlar. Özellikle hesaplamalı işlemler veya dönüştürmelerde kullanışlıdır.
const std = @import("std");
pub fn main() void {
const bits = [_]u8{ 1, 0, 1, 1 };
var value: u32 = 0;
for (bits, 0..) |bit, i| {
const i_u32: u32 = @intCast(i);
const place_value = std.math.pow(u32, 2, i_u32);
value += place_value * bit;
}
std.debug.print("The value of bits '1101': {}.\n", .{value});
}
Açıklama:
bits: 1101 sayısının ters sıralı (little-endian) hali.@intCast:usizetüründekiideğeriu32'ye dönüştürülür.std.math.pow: 2'ninikuvveti alınır.- Sonuç olarak binary dizisi onluk sayıya çevrilir.
Çıktı:
The value of bits '1101': 13.
for ile Döngü Kontrolü
Zig'de for döngüsünde aşağıdaki kontroller de yapılabilir:
break: Döngüyü erkenden sonlandırır.continue: Bir sonraki döngü adımına geçer.return: Döngü içerisinden fonksiyonu sonlandırabilir.
Sonuç
Zig'deki for döngüsü yapısı; sade, güçlü ve güvenli bir şekilde dizi ve slice üzerinde işlem yapmaya olanak tanır. Hem eleman hem de indeks alınabilmesi sayesinde işlem çeşitliliği artar. Zig’in güçlü tür sistemi ve standart kütüphanesiyle birlikte, for döngüleriyle sistem seviyesinde güvenli ve okunabilir kodlar yazmak mümkündür.