1.3. Числа, переменные, Bool#
Данный раздел является кратким обзором следующих разделов манула
Variables [url];
Integers and Floating-Point Numbers [url];
Mathematical Operations and Elementary Functions [url];
Complex and Rational Numbers [url].
1.3.1. Числа и переменные#
В Julia богатая система встроенных числовых типов, узнать тип переменной или литерала можно с помощью функции typeof(x)
.
julia> typeof(5)
Int64
julia> typeof(5.0)
Float64
julia> typeof(5im)
Complex{Int64}
julia> typeof(2.3 + 5.0im)
ComplexF64 (alias for Complex{Float64})
julia> typeof(2//3)
Rational{Int64}
julia> typeof(1//3 + 2//3im)
Complex{Rational{Int64}}
Синтаксис присвоения значения переменной стандартный, также поддерживается параллельное присваивание и каскадное.
julia> x = 5
5
julia> x, y = 1, 2
(1, 2)
julia> x
1
julia> y
2
julia> x = y = 1
1
julia> x, y
(1, 1)
julia> (x = (y = 2) + (z = 3))
5
julia> x, y, z
(5, 2, 3)
В исполнительном режиме REPL печатает возращаемое значение, его можно опустить с помощью ;
в конце выражения.
julia> x = 10;
julia> x
10
В имена переменных могут входить любые Unicode символы.
REPL позволяет набирать часто употребляемые с помощью LaTeX-подобного синтаксиса и Tab ⇥, например, так выглядит набор символов α₁
:
julia> \alpha # потом нажмите `<Tab>`, и ввод сменится на α
α
α\_1 # `<Tab>`
α₁
Описание |
Синтаксис |
---|---|
Бинарные операторы |
|
Функции |
|
Унарный минус |
|
Частное от деления целых |
|
Остаток от деления целых |
|
Возведение в степень \(x^y\) |
|
Логарифмы \(\ln(x)\), \(\log_2(x)\), \(\log_{10}(x)\) |
|
Тригонометрия \(\sin(x)\), \(\cos(x)\) |
|
Квадратный корень \(\sqrt{x}\) |
|
Математические константы
julia> π # \pi<Tab>
π = 3.1415926535897...
julia> ℯ # \euler<Tab>
ℯ = 2.7182818284590...
julia> typeof(ℯ)
Irrational{:ℯ}
При применении операций к разным типам аргументов тип результата интуитивен: число из типа, соответствующего, математически «меньшему» множеству конвертируется в тип математически «большего» множества. Затем операция выполняется для одинаковых типов. Система типов в Julia это её позвоночник, см. раздел Система типов.
Редко требуется аргумент подать в явном типе, например,
julia> sqrt(-1.0)
ERROR: DomainError with -1.0:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
...
julia> sqrt(-1.0 + 0im)
0.0 + 1.0im
Почему?
Во-первых, функция корня в математике определяется на разных множествах.
Во-вторых, так удаётся сохранять стабильность типов: т.е. когда по типам аргументов функции можно определить тип возвращаемого значения. Если бы функция корня, извлекая из Float64
, возвращала иногда Float64
, а иногда Complex{Float64}
, то предсказать тип возвращаемого значения было бы невозможно. Предсказание типов позволяет компилировать функции и методы, не уступающие по скорости аналогам кода на статически типизируемых языках, например, C/C++
.
1.3.2. Логические типы и сравнение величин#
В Julia один логический тип Bool
, имеющий два значения: true
и false
.
Операторы сравнения как правило возвращают тип Bool
и используются в логических конструкциях.
Описание |
Синтаксис |
---|---|
Логическое отрицание |
|
Логическое И (short-circuit) |
|
Логическое ИЛИ (short-circuit) |
|
Равенство по значению |
|
Identity |
|
Неточное равенство по значению |
|
Меньше, чем |
|
Больше, чем |
|
Кроме того, существует тип Missing
с единственным значением missing
.
Он используется с операторами &
и |
, реализующую троичную логику на true
, false
и missing
.