Spec-Zone.ru › Julia 1.8

Обработка различий операционных систем

При написании кроссплатформенных приложений или библиотек часто необходимо учитывать различия между операционными системами. Переменная Sys.KERNEL может использоваться для обработки таких случаев. В модуле Sys имеется несколько функций, предназначенных для упрощения этой задачи, таких как isunix, islinux, isapple, isbsd, isfreebsd, и iswindows. Их можно использовать следующим образом:

if Sys.iswindows()
    windows_specific_thing(a)
end

Обратите внимание, что islinux, isapple, и isfreebsd являются взаимоисключающими подмножествами isunix. Кроме того, существует макрос @static, который позволяет использовать эти функции для условного скрытия неверного кода, как показано в следующих примерах.

Простые блоки:

ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)

Сложные блоки:

@static if Sys.islinux()
    linux_specific_thing(a)
elseif Sys.isapple()
    apple_specific_thing(a)
else
    generic_thing(a)
end

При вложенности условных операторов, необходимо повторять @static для каждого уровня (скобки необязательны, но рекомендуются для лучшей читаемости):

@static Sys.iswindows() ? :a : (@static Sys.isapple() ? :b : :c)

© 2009–2024 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.10/manual/handling-operating-system-variation/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API