Spec-Zone.ru › Julia 0.6

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

При работе с платформами библиотек часто необходимо предоставлять специальные случаи для различных платформ. Переменная Sys.KERNEL может использоваться для написания этих специальных случаев. Существует несколько функций, призванных облегчить эту задачу: is_unix, is_linux, is_apple, is_bsd, и is_windows. Эти функции могут быть использованы следующим образом:

if is_windows()
    some_complicated_thing(a)
end

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

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

ccall( (@static is_windows() ? :_fopen : :fopen), ...)

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

@static if is_linux()
    some_complicated_thing(a)
else
    some_different_thing(a)
end

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

@static is_windows() ? :a : (@static is_apple() ? :b : :c)

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

Spec-Zone.ru

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