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)
end
islinux
, 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)
end
Koş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)