gokayburuc.dev

Zig'de Optionals (Seçimli Değerler)

Zig programlama dilinde bir fonksiyonun döndürebileceği sonuçlar genellikle iki farklı yapı üzerinden ele alınır:

Bu makalede ikinci yapıyı, yani Optionals kavramını inceleyeceğiz.


Optionals Nedir?

Bir değişkenin belirli bir değere sahip olup olmadığını temsil etmek için kullanılır. Eğer değer varsa ilgili türün bir değeri döner, yoksa null döner.

var foo: ?u32 = 10;    

Bu örnekte foo değişkeni iki farklı durumda olabilir:

?T ifadesi, "T türünde bir değer veya null" anlamına gelir.


Optionals ile Kontrol Yapıları

Optional değerlerle çalışırken, değer mevcut mu değil mi sorusunu yanıtlamak için kontrol blokları kullanılır. Örneğin:

const std = @import("std");

pub fn main() void {
    var x: ?i32 = null;
    x = 42;

    if (x) |val| {
        std.debug.print("Value: {}\n", .{val});
    } else {
        std.debug.print("No value\n", .{});
    }
}

Burada kullanılan yapı:


Zig'de Optionals Kontrol Yöntemleri

Zig'de Optionals ile çalışırken sık kullanılan yöntemler şunlardır:

null, bir değerin mevcut olmadığını ifade eder. Bellekte bu alan ayrılmış ama içi boş bırakılmıştır.


orelse ile Varsayılan Değer Kullanımı

orelse ifadesi, null kontrolü yapmadan bir varsayılan değer döndürmek için kullanılır.

// hayali fonksiyon
const result: ?u8 = GetValue();

// Eğer result null ise 42 atanır, değilse result'un değeri kullanılır
const my_answer: u8 = result orelse 42;

Bu yapı, sık kullanılan "fallback" mantığını Zig dilinde oldukça sade bir şekilde ifade eder.


.? Operatörü

Eğer bir Optional değerin kesinlikle null olmayacağını biliyorsak, .? operatörüyle doğrudan değere erişebiliriz.

const x: ?i32 = 100;
const y: i32 = x.?; // null ise panic atar

Bu kullanım dikkatli yapılmalıdır. Çünkü değer null çıkarsa program panic ile sonlanır.


Sonuç ve Değerlendirme

Zig dilinde Optionals yapısı, belirsiz değerleri kontrol etmenin güçlü bir yolunu sunar. Hem güvenli hem de açık bir sözdizimine sahiptir. Kullanım senaryoları:

Özetle:

Bu yapılarla, Zig programlarındaki "boş değer" yönetimi hem okunabilir hem de güvenli hale gelir.

#zig