PackedInt32Array

Упакованный массив 32-битных целых чисел.

Описание

Массив, специально разработанный для хранения 32-битных целочисленных значений. Плотно упаковывает данные, поэтому экономит память для больших размеров массива.

Примечание: Этот тип хранит 32-битные целые числа со знаком, что означает, что он может принимать значения в интервале [-2^31, 2^31 - 1], т. е. [-2147483648, 2147483647]. Превышение этих границ приведет к циклическому переносу. Для сравнения, int использует 64-битные целые числа со знаком, которые могут хранить гораздо большие значения. Если вам нужно плотно упаковать 64-битные целые числа, см. PackedInt64Array.

Примечание: Упакованные массивы всегда передаются по ссылке. Чтобы получить копию массива, которую можно изменять независимо от исходного массива, используйте duplicate(). Это не касается встроенных свойств и методов. В этих случаях возвращаемый упакованный массив является копией, и его изменение не повлияет на исходное значение. Чтобы обновить встроенное свойство этого типа, измените возвращаемый массив, а затем снова присвойте его свойству.

Примечание

Существуют заметные различия при использовании данного API с C#. Подробнее см. API различия C# и GDScript.

Конструкторы

PackedInt32Array

PackedInt32Array()

PackedInt32Array

PackedInt32Array(from: PackedInt32Array)

PackedInt32Array

PackedInt32Array(from: Array)

Методы

bool

append(value: int)

void

append_array(array: PackedInt32Array)

int

bsearch(value: int, before: bool = true) const

void

clear()

int

count(value: int) const

PackedInt32Array

duplicate() const

bool

erase(value: int)

void

fill(value: int)

int

find(value: int, from: int = 0) const

int

get(index: int) const

bool

has(value: int) const

int

insert(at_index: int, value: int)

bool

is_empty() const

bool

push_back(value: int)

void

remove_at(index: int)

int

resize(new_size: int)

void

reverse()

int

rfind(value: int, from: int = -1) const

void

set(index: int, value: int)

int

size() const

PackedInt32Array

slice(begin: int, end: int = 2147483647) const

void

sort()

PackedByteArray

to_byte_array() const

Операторы

bool

operator !=(right: PackedInt32Array)

PackedInt32Array

operator +(right: PackedInt32Array)

bool

operator ==(right: PackedInt32Array)

int

operator [](index: int)


Описания конструктора

PackedInt32Array PackedInt32Array() 🔗

Создает пустой PackedInt32Array.


PackedInt32Array PackedInt32Array(from: PackedInt32Array)

Создает PackedInt32Array как копию заданного PackedInt32Array.


PackedInt32Array PackedInt32Array(from: Array)

Создает новый PackedInt32Array. При желании можно передать универсальный Array, который будет преобразован.


Описания метода

bool append(value: int) 🔗

Добавляет элемент в конец массива (псевдоним push_back()).


void append_array(array: PackedInt32Array) 🔗

Добавляет PackedInt32Array в конец этого массива.


int bsearch(value: int, before: bool = true) const 🔗

Находит индекс существующего значения (или индекс вставки, который поддерживает порядок сортировки, если значение еще не присутствует в массиве) с помощью бинарного поиска. При желании можно передать спецификатор before. Если false, возвращаемый индекс следует после всех существующих записей значения в массиве.

Примечание: Вызов bsearch() для несортированного массива приводит к неожиданному поведению.


void clear() 🔗

Очищает массив. Это эквивалентно использованию resize() с размером 0.


int count(value: int) const 🔗

Возвращает количество раз когда элемент встречается в массиве.


PackedInt32Array duplicate() const 🔗

Создает копию массива и возвращает ее.


bool erase(value: int) 🔗

Удаляет первое вхождение значения из массива и возвращает true. Если значение не существует в массиве, ничего не происходит и возвращается false. Чтобы удалить элемент по индексу, используйте remove_at().


void fill(value: int) 🔗

Присваивает заданное значение всем элементам массива. Обычно это можно использовать вместе с resize() для создания массива с заданным размером и инициализированными элементами.


int find(value: int, from: int = 0) const 🔗

Ищет в массиве значение и возвращает его индекс или -1, если не найдено. При желании можно передать начальный индекс поиска.


int get(index: int) const 🔗

Returns the 32-bit integer at the given index in the array. If index is out-of-bounds or negative, this method fails and returns 0.

This method is similar (but not identical) to the [] operator. Most notably, when this method fails, it doesn't pause project execution if run from the editor.


bool has(value: int) const 🔗

Возвращает true, если массив содержит value.


int insert(at_index: int, value: int) 🔗

Вставляет новое целое число в указанную позицию в массиве. Позиция должна быть допустимой или находиться в конце массива (idx == size()).


bool is_empty() const 🔗

Возвращает true если массив пустой.


bool push_back(value: int) 🔗

Добавляет значение в массив.


void remove_at(index: int) 🔗

Удаляет элемент из массива по индексу.


int resize(new_size: int) 🔗

Устанавливает размер массива. Если массив увеличивается, резервирует элементы в конце массива. Если массив уменьшается, усекает массив до нового размера. Вызов resize() один раз и назначение новых значений быстрее, чем добавление новых элементов по одному.

Возвращает @GlobalScope.OK в случае успеха или одну из следующих констант Error, если этот метод не удался: @GlobalScope.ERR_INVALID_PARAMETER, если размер отрицательный, или @GlobalScope.ERR_OUT_OF_MEMORY, если выделение памяти не удается. Используйте size(), чтобы узнать фактический размер массива после изменения размера.


void reverse() 🔗

Инвертирует порядок элементов в массиве.


int rfind(value: int, from: int = -1) const 🔗

Поиск в массиве в обратном порядке. При желании можно передать начальный индекс поиска. Если отрицательный, начальный индекс считается относительно конца массива.


void set(index: int, value: int) 🔗

Изменяет целое число по указанному индексу.


int size() const 🔗

Возвращает число элементов в массиве.


PackedInt32Array slice(begin: int, end: int = 2147483647) const 🔗

Возвращает срез PackedInt32Array от begin (включительно) до end (исключительно) как новый PackedInt32Array.

Абсолютное значение begin и end будет ограничено размером массива, поэтому значение по умолчанию для end делает его срезом по размеру массива по умолчанию (т. е. arr.slice(1) является сокращением для arr.slice(1, arr.size())).

Если begin или end отрицательны, они будут относительными к концу массива (т. е. arr.slice(0, -2) является сокращением для arr.slice(0, arr.size() - 2)).


void sort() 🔗

Сортирует элементы массива в порядке возрастания.


PackedByteArray to_byte_array() const 🔗

Возвращает копию данных, преобразованных в PackedByteArray, где каждый элемент закодирован как 4 байта.

Размер нового массива будет int32_array.size() * 4.


Описания оператора

bool operator !=(right: PackedInt32Array) 🔗

Возвращает true, если содержимое массивов различается.


PackedInt32Array operator +(right: PackedInt32Array) 🔗

Возвращает новый PackedInt32Array с содержимым right, добавленным в конец этого массива. Для лучшей производительности рассмотрите возможность использования append_array() вместо этого.


bool operator ==(right: PackedInt32Array) 🔗

Возвращает true, если содержимое обоих массивов одинаково, т. е. все они имеют одинаковые целые числа по соответствующим индексам.


int operator [](index: int) 🔗

Возвращает int по индексу index. Отрицательные индексы можно использовать для доступа к элементам, начиная с конца. Использование индекса за пределами массива приведет к ошибке.

Обратите внимание, что тип int является 64-битным, в отличие от значений, хранящихся в массиве.