Handling Operating System Variation
Çapraz platform uygulamaları veya kütüphaneler yazarken, işletim sistemleri arasındaki farklılıklara izin vermek genellikle gereklidir. Sys.KERNEL değişkeni, bu tür durumları yönetmek için kullanılabilir. Bunu kolaylaştırmak amacıyla Sys modülünde isunix, islinux, isapple, isbsd, isfreebsd ve iswindows gibi birkaç işlev bulunmaktadır. Bunlar aşağıdaki gibi kullanılabilir:
if Sys.iswindows()
windows_specific_thing(a)
endislinux, isapple ve isfreebsd'nin isunix'in karşılıklı dışlayıcı alt kümeleri olduğunu unutmayın. Ayrıca, geçersiz kodu koşullu olarak gizlemek için bu işlevleri kullanmayı mümkün kılan @static adlı bir makro vardır; bu, aşağıdaki örneklerde gösterilmiştir.
Basit bloklar:
ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)Karmaşık bloklar:
@static if Sys.islinux()
linux_specific_thing(a)
elseif Sys.isapple()
apple_specific_thing(a)
else
generic_thing(a)
endKoşullu ifadeleri iç içe yerleştirirken, @static her seviye için tekrarlanmalıdır (parantezler isteğe bağlıdır, ancak okunabilirlik için önerilir):
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)