Handling Operating System Variation
Lors de l'écriture d'applications ou de bibliothèques multiplateformes, il est souvent nécessaire de tenir compte des différences entre les systèmes d'exploitation. La variable Sys.KERNEL peut être utilisée pour gérer de tels cas. Il existe plusieurs fonctions dans le module Sys destinées à faciliter cela, telles que isunix, islinux, isapple, isbsd, isfreebsd et iswindows. Celles-ci peuvent être utilisées comme suit :
if Sys.iswindows()
windows_specific_thing(a)
endNotez que islinux, isapple et isfreebsd sont des sous-ensembles mutuellement exclusifs de isunix. De plus, il existe un macro @static qui permet d'utiliser ces fonctions pour masquer conditionnellement du code invalide, comme démontré dans les exemples suivants.
Blocs simples :
ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)Blocs complexes :
@static if Sys.islinux()
linux_specific_thing(a)
elseif Sys.isapple()
apple_specific_thing(a)
else
generic_thing(a)
endLorsqu'on imbrique des conditionnelles, le @static doit être répété pour chaque niveau (les parenthèses sont optionnelles, mais recommandées pour la lisibilité) :
@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)