Базовые операторы Julia

Следующие арифметические операторы поддерживаются для всех примитивных числовых типов:





Несколько простых примеров с использованием арифметических операторов:


julia> 1+10-5

6


julia> 2-6

–4


julia> 5*20/10

10.0


julia> 20\10

0.5


julia> 3^3 27


julia> 5.5%-2

1.5


Число, помещенное непосредственно перед идентификатором или круглыми скобками, например, 2x или 2(x+y), рассматривается как умножение.

Логические операторы

Для типов Bool поддерживаются следующие логические операторы:





Примеры использования логических операторов:


julia> !true

false


julia> !false

true


julia> true && true

true


julia> true && false

false


julia> false && false

false


julia> true || true

true


julia> true || false

true


julia> false || false

false

Побитовые операторы

Следующие побитовые операторы поддерживаются для всех примитивных целочисленных типов:





julia> ~100

–101


julia> 121 & 232

104


julia> 121 | 232

249


julia> 121 ⊻ 232 #Знак юникода

145


julia> xor(121, 232)

145


julia> ~UInt32(121)

0xffffff86


julia> ~UInt8(121)

0x86

Операторы обновления

Каждый арифметические и побитовый оператор имеет обновляющую версию, которую можно сформировать, поставив знак равенства (=) сразу после оператора. Этот оператор обновления присваивает результат операции обратно своему левому операнду.

Версии всех двоичных арифметических и побитовых операторов:





Пример использования операторов обновления:


julia> x = 25

25


julia> x += 25

50


julia> x

50


Оператор обновления переопределяет переменную в левой части. В результате тип переменной может измениться:


julia> x = 0x01

0x01


julia> typeof(x)

UInt8


julia> x *= 2

2


julia> typeof(x)

Int64

Векторизированные “точечные” операторы

Для каждого бинарного оператора существует соответствующий "точечный" оператор, который применяет оператор поэлементно над многоэлементными структурами (массивы и т.п.).

Примеры использования “точечного” оператора:


julia> [2, 4 ,6].^2

3-element Vector{Int64}:

4

16

36


julia> x=[1 2 3 4 5 ; 6 7 8 9 10]

2×5 Matrix{Int64}:

1 2 3 4 5

6 7 8 9 10


julia> x.+1

2×5 Matrix{Int64}:

2 3 4 5 6

7 8 9 10 11


julia> x

2×5 Matrix{Int64}:

1 2 3 4 5

6 7 8 9 10


julia> x .+=1

2×5 Matrix{Int64}:

2 3 4 5 6

7 8 9 10 11


julia> x

2×5 Matrix{Int64}:

2 3 4 5 6

7 8 9 10 11


Обратите внимание, "точечные" операторы обновления изменяют исходные значения, в отличии от остальных, создающих новые.

Загрузка...