:github_url: hide .. _class_PackedInt64Array: PackedInt64Array ================ Упакованный массив 64-битных целых чисел. .. rst-class:: classref-introduction-group Описание ---------------- Массив, специально разработанный для хранения 64-битных целых чисел. Плотно упаковывает данные, поэтому экономит память для больших размеров массива. \ **Примечание:** Этот тип хранит 64-битные целые числа со знаком, что означает, что он может принимать значения в интервале ``[-2^63, 2^63 - 1]``, т. е. ``[-9223372036854775808, 9223372036854775807]``. Превышение этих границ приведет к циклическому переносу. Если вам нужно плотно упаковать только 32-битные целые числа, см. :ref:`PackedInt32Array` для более удобной для памяти альтернативы. \ **Различия между упакованными массивами, типизированными массивами и нетипизированными массивами:** Упакованные массивы обычно быстрее итерируются и изменяются по сравнению с типизированным массивом того же типа (например, **PackedInt64Array** по сравнению с ``Array[int]``). Кроме того, упакованные массивы потребляют меньше памяти. С другой стороны, упакованные массивы менее гибкие, поскольку они не предлагают столько удобных методов, как :ref:`Array.map()`. Типизированные массивы, в свою очередь, быстрее итерируются и изменяются, чем нетипизированные массивы. \ **Примечание:** Упакованные массивы всегда передаются по ссылке. Чтобы получить копию массива, которую можно изменить независимо от исходного массива, используйте :ref:`duplicate()`. Это *не* касается встроенных свойств и методов. В этих случаях возвращаемый упакованный массив является копией, и ее изменение *не* повлияет на исходное значение. Чтобы обновить встроенное свойство этого типа, измените возвращаемый массив, а затем снова присвойте его свойству. .. note:: Существуют заметные различия при использовании данного API с C#. Подробнее см. :ref:`doc_c_sharp_differences`. .. rst-class:: classref-reftable-group Конструкторы ------------------------ .. table:: :widths: auto +-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`PackedInt64Array`\ (\ ) | +-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`PackedInt64Array`\ (\ from\: :ref:`PackedInt64Array`\ ) | +-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`PackedInt64Array`\ (\ from\: :ref:`Array`\ ) | +-------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Методы ------------ .. table:: :widths: auto +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`append`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`append_array`\ (\ array\: :ref:`PackedInt64Array`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`bsearch`\ (\ value\: :ref:`int`, before\: :ref:`bool` = true\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`count`\ (\ value\: :ref:`int`\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`duplicate`\ (\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`int`, from\: :ref:`int` = 0\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get`\ (\ index\: :ref:`int`\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has`\ (\ value\: :ref:`int`\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`insert`\ (\ at_index\: :ref:`int`, value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_empty`\ (\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`push_back`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_at`\ (\ index\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`resize`\ (\ new_size\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`reverse`\ (\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`rfind`\ (\ value\: :ref:`int`, from\: :ref:`int` = -1\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set`\ (\ index\: :ref:`int`, value\: :ref:`int`\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`size`\ (\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`slice`\ (\ begin\: :ref:`int`, end\: :ref:`int` = 2147483647\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`sort`\ (\ ) | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`to_byte_array`\ (\ ) |const| | +-------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group Операторы ------------------ .. table:: :widths: auto +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=`\ (\ right\: :ref:`PackedInt64Array`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`operator +`\ (\ right\: :ref:`PackedInt64Array`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==`\ (\ right\: :ref:`PackedInt64Array`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator []`\ (\ index\: :ref:`int`\ ) | +-------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания конструктора ------------------------------------------ .. _class_PackedInt64Array_constructor_PackedInt64Array: .. rst-class:: classref-constructor :ref:`PackedInt64Array` **PackedInt64Array**\ (\ ) :ref:`🔗` Создает пустой **PackedInt64Array**. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`PackedInt64Array` **PackedInt64Array**\ (\ from\: :ref:`PackedInt64Array`\ ) Создает **PackedInt64Array** как копию заданного **PackedInt64Array**. .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`PackedInt64Array` **PackedInt64Array**\ (\ from\: :ref:`Array`\ ) Создает новый :ref:`PackedInt32Array`. При желании можно передать универсальный :ref:`Array`, который будет преобразован. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания метода ------------------------------ .. _class_PackedInt64Array_method_append: .. rst-class:: classref-method :ref:`bool` **append**\ (\ value\: :ref:`int`\ ) :ref:`🔗` Добавляет элемент в конец массива (псевдоним :ref:`push_back()`). .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_append_array: .. rst-class:: classref-method |void| **append_array**\ (\ array\: :ref:`PackedInt64Array`\ ) :ref:`🔗` Добавляет **PackedInt64Array** в конец этого массива. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_bsearch: .. rst-class:: classref-method :ref:`int` **bsearch**\ (\ value\: :ref:`int`, before\: :ref:`bool` = true\ ) |const| :ref:`🔗` Находит индекс существующего значения (или индекс вставки, который поддерживает порядок сортировки, если значение еще не присутствует в массиве) с помощью бинарного поиска. При желании можно передать спецификатор ``before``. Если ``false``, возвращаемый индекс следует после всех существующих записей значения в массиве. \ **Примечание:** Вызов :ref:`bsearch()` для несортированного массива приводит к неожиданному поведению. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_clear: .. rst-class:: classref-method |void| **clear**\ (\ ) :ref:`🔗` Очищает массив. Это эквивалентно использованию :ref:`resize()` с размером ``0``. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_count: .. rst-class:: classref-method :ref:`int` **count**\ (\ value\: :ref:`int`\ ) |const| :ref:`🔗` Возвращает количество раз когда элемент встречается в массиве. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_duplicate: .. rst-class:: classref-method :ref:`PackedInt64Array` **duplicate**\ (\ ) |const| :ref:`🔗` Создает копию массива и возвращает ее. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_erase: .. rst-class:: classref-method :ref:`bool` **erase**\ (\ value\: :ref:`int`\ ) :ref:`🔗` Удаляет первое вхождение значения из массива и возвращает ``true``. Если значение не существует в массиве, ничего не происходит и возвращается ``false``. Чтобы удалить элемент по индексу, используйте :ref:`remove_at()`. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_fill: .. rst-class:: classref-method |void| **fill**\ (\ value\: :ref:`int`\ ) :ref:`🔗` Присваивает заданное значение всем элементам массива. Обычно это можно использовать вместе с :ref:`resize()` для создания массива с заданным размером и инициализированными элементами. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_find: .. rst-class:: classref-method :ref:`int` **find**\ (\ value\: :ref:`int`, from\: :ref:`int` = 0\ ) |const| :ref:`🔗` Ищет в массиве значение и возвращает его индекс или ``-1``, если не найдено. При желании можно передать начальный индекс поиска. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_get: .. rst-class:: classref-method :ref:`int` **get**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the 64-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. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_has: .. rst-class:: classref-method :ref:`bool` **has**\ (\ value\: :ref:`int`\ ) |const| :ref:`🔗` Возвращает ``true``, если массив содержит ``value``. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_insert: .. rst-class:: classref-method :ref:`int` **insert**\ (\ at_index\: :ref:`int`, value\: :ref:`int`\ ) :ref:`🔗` Вставляет новое целое число в указанную позицию в массиве. Позиция должна быть допустимой или находиться в конце массива (``idx == size()``). .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_is_empty: .. rst-class:: classref-method :ref:`bool` **is_empty**\ (\ ) |const| :ref:`🔗` Возвращает ``true`` если массив пустой. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_push_back: .. rst-class:: classref-method :ref:`bool` **push_back**\ (\ value\: :ref:`int`\ ) :ref:`🔗` Добавляет значение в массив. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_remove_at: .. rst-class:: classref-method |void| **remove_at**\ (\ index\: :ref:`int`\ ) :ref:`🔗` Удаляет элемент из массива по индексу. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_resize: .. rst-class:: classref-method :ref:`int` **resize**\ (\ new_size\: :ref:`int`\ ) :ref:`🔗` Устанавливает размер массива. Если массив увеличивается, резервирует элементы в конце массива. Если массив уменьшается, усекает массив до нового размера. Вызов :ref:`resize()` один раз и назначение новых значений быстрее, чем добавление новых элементов по одному. Возвращает :ref:`@GlobalScope.OK` в случае успеха или одну из следующих констант :ref:`Error`, если этот метод не удался: :ref:`@GlobalScope.ERR_INVALID_PARAMETER`, если размер отрицательный, или :ref:`@GlobalScope.ERR_OUT_OF_MEMORY`, если выделение памяти не удается. Используйте :ref:`size()`, чтобы узнать фактический размер массива после изменения размера. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_reverse: .. rst-class:: classref-method |void| **reverse**\ (\ ) :ref:`🔗` Инвертирует порядок элементов в массиве. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_rfind: .. rst-class:: classref-method :ref:`int` **rfind**\ (\ value\: :ref:`int`, from\: :ref:`int` = -1\ ) |const| :ref:`🔗` Поиск в массиве в обратном порядке. При желании можно передать начальный индекс поиска. Если отрицательный, начальный индекс считается относительно конца массива. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_set: .. rst-class:: classref-method |void| **set**\ (\ index\: :ref:`int`, value\: :ref:`int`\ ) :ref:`🔗` Изменяет целое число по указанному индексу. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_size: .. rst-class:: classref-method :ref:`int` **size**\ (\ ) |const| :ref:`🔗` Возвращает число элементов в массиве. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_slice: .. rst-class:: classref-method :ref:`PackedInt64Array` **slice**\ (\ begin\: :ref:`int`, end\: :ref:`int` = 2147483647\ ) |const| :ref:`🔗` Возвращает срез **PackedInt64Array** от ``begin`` (включительно) до ``end`` (исключительно) как новый **PackedInt64Array**. Абсолютное значение ``begin`` и ``end`` будет ограничено размером массива, поэтому значение по умолчанию для ``end`` делает его срезом по размеру массива по умолчанию (т. е. ``arr.slice(1)`` является сокращением для ``arr.slice(1, arr.size())``). Если ``begin`` или ``end`` отрицательны, они будут относительными к концу массива (т. е. ``arr.slice(0, -2)`` является сокращением для ``arr.slice(0, arr.size() - 2)``). .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_sort: .. rst-class:: classref-method |void| **sort**\ (\ ) :ref:`🔗` Сортирует элементы массива в порядке возрастания. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_method_to_byte_array: .. rst-class:: classref-method :ref:`PackedByteArray` **to_byte_array**\ (\ ) |const| :ref:`🔗` Возвращает копию данных, преобразованных в :ref:`PackedByteArray`, где каждый элемент закодирован как 8 байтов. Размер нового массива будет ``int64_array.size() * 8``. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания оператора ------------------------------------ .. _class_PackedInt64Array_operator_neq_PackedInt64Array: .. rst-class:: classref-operator :ref:`bool` **operator !=**\ (\ right\: :ref:`PackedInt64Array`\ ) :ref:`🔗` Возвращает ``true``, если содержимое массивов различается. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_operator_sum_PackedInt64Array: .. rst-class:: classref-operator :ref:`PackedInt64Array` **operator +**\ (\ right\: :ref:`PackedInt64Array`\ ) :ref:`🔗` Возвращает новый **PackedInt64Array** с содержимым ``right``, добавленным в конец этого массива. Для лучшей производительности рассмотрите возможность использования :ref:`append_array()` вместо этого. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_operator_eq_PackedInt64Array: .. rst-class:: classref-operator :ref:`bool` **operator ==**\ (\ right\: :ref:`PackedInt64Array`\ ) :ref:`🔗` Возвращает ``true``, если содержимое обоих массивов одинаково, т. е. все они имеют одинаковые целые числа по соответствующим индексам. .. rst-class:: classref-item-separator ---- .. _class_PackedInt64Array_operator_idx_int: .. rst-class:: classref-operator :ref:`int` **operator []**\ (\ index\: :ref:`int`\ ) :ref:`🔗` Возвращает :ref:`int` по индексу ``index``. Отрицательные индексы можно использовать для доступа к элементам, начиная с конца. Использование индекса за пределами массива приведет к ошибке. .. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)` .. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)` .. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)` .. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)` .. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)` .. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)` .. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`