ТОП просматриваемых книг сайта:
Julia. Язык программирования. Быстрый старт. Вадим Никитин
Читать онлайн.Название Julia. Язык программирования. Быстрый старт
Год выпуска 2023
isbn
Автор произведения Вадим Никитин
Издательство Автор
ComplexF64 (alias for Complex{Float64})
julia> sqrt(x)
0.0 + 1.4142135623730951im
В этом случае Julia определяет тип значения исходя из формы записи как Complex{Float64}, по сути формой записи мы задали тип значения переменной.
Типы есть только у значений. У переменных типов нет. Переменные – это просто имена, связанные со значениями, хотя для простоты можно говорить "тип переменной", как сокращение от "тип значения, на которое ссылается переменная".
Julia изначально предоставляет довольно полный и иерархически организованный набор предопределенных типов, особенно числовых. Это либо скаляры, такие как: целые числа (Int), числа с плавающей запятой (Float) и символы (Char). Либо контейнероподобные структуры, способные хранить другие объекты, такие как: многомерные массивы (Array), словари (Dict), наборы (Set) и т. д. По стилистическим соглашениям названия типов начинаются с заглавной буквы, например Int64 или Bool. Иногда в фигурных скобках за именем типа следуют другие параметры, например типы содержащихся элементов или количество измерений. Эти параметры встречаются у всех контейнероподобных структур и некоторых неконтейнерных. Например тип Array{Int64,2} будет использоваться для двумерного массива целых 64-битных чисел со знаком. В терминологии Julia такие типы называются параметрическими.
Оператор :: можно использовать для присоединения аннотаций типов к выражениям и переменным в программах, например:
julia> (2+2)::Int
4
julia> (2+2)::AbstractFloat
ERROR: TypeError: in typeassert, expected AbstractFloat, got a value of type Int64
julia> (2.0+2.0)::AbstractFloat
4.0
При добавлении к выражению, вычисляющему значение, оператор :: читается как "является экземпляром". Его можно использовать в любом месте, чтобы утверждать, что значение выражения слева является экземпляром типа справа. Если тип справа конкретный, то значение слева должно иметь этот тип в качестве своей реализации. Если тип абстрактный, то достаточно, чтобы значение было реализовано конкретным типом, который является подтипом абстрактного типа. Если утверждение о типе не истинно, выбрасывается исключение, в противном случае возвращается левое значение.
Пример используемый выше, теперь нет нужды использовать комплексную форму записи:
julia> x::Complex{Float64}=-2
–2
julia> typeof(x)
ComplexF64 (alias for Complex{Float64})
julia> sqrt(x)
0.0 + 1.4142135623730951im
Когда оператор :: добавляется к переменной в левой части присваивания, он означает немного другое: он объявляет переменную всегда имеющей указанный тип, как объявление типа в статически типизированном языке, таком как C. Каждое значение, присвоенное переменной, будет преобразовано к объявленному типу с помощью функции convert(), если это возможно.
Целые числа
Типы целых чисел в Julia:
Целые числа вводятся и выводятся стандартным образом:
julia> 10
10
julia> 0123456789
123456789
Тип по умолчанию для целых чисел зависит от разрядности системы (64-бита):
julia> typeof(10)
Int64
julia> typeof(0123456789)
Int64
Julia также определяет типы Int и UInt, которые являются псевдонимами для системных знаковых и беззнаковых типов целых чисел соответственно:
julia> Int
Int64
julia> UInt
UInt64
Большие