Julia. Язык программирования. Быстрый старт. Вадим Никитин

Читать онлайн.
Название Julia. Язык программирования. Быстрый старт
Автор произведения Вадим Никитин
Жанр
Серия
Издательство
Год выпуска 2023
isbn



Скачать книгу

typeof(x)

      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

      Большие