Reckfell.Collections.Array
Коллекция Variant движка для C#; количество, копирование и отличие от T[].
Класс C# из Reckfell.Collections, оборачивающий массив Variant движка. Используется на границе с API движка; это другой тип, чем массив C# T[] или List<T>. Для типизированной коллекции движка существует Reckfell.Collections.Array<T>.
Присваивание переменной копирует ссылку на коллекцию, не её элементы. Duplicate() создаёт отдельную верхнюю коллекцию; правила вложенного копирования определяются параметром deep. Не считайте ссылки на объекты движка автоматически клонированными.
В C# массив не преобразуется в bool. Для количества элементов используйте Count, например array.Count > 0. Если переменная может быть null, сначала проверьте array is not null. Пустая коллекция и отсутствие ссылки — разные состояния.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы10
Array10 перегрузок
public Array();Создает массив из Vector4[].
public Array(Variant[] array);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
array | Variant[] | — |
arrayОбъекты, которые будут помещены в новый массив.
public Array(System.Collections.Generic.IEnumerable<Variant> collection);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
collection | System.Collections.Generic.IEnumerable<Variant> | — |
collectionКоллекция элементов для построения.
public Array(ReadOnlySpan<EntityPath> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | ReadOnlySpan<EntityPath> | — |
public Array(ReadOnlySpan<ReckfellObject> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | ReadOnlySpan<ReckfellObject> | — |
public Array(ReadOnlySpan<Rid> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | ReadOnlySpan<Rid> | — |
public Array(ReadOnlySpan<StringName> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | ReadOnlySpan<StringName> | — |
public Array(Span<EntityPath> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | Span<EntityPath> | — |
public Array(Span<Rid> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | Span<Rid> | — |
public Array(Span<StringName> span);Создает массив из Vector4[].
| Имя | Тип | По умолчанию |
|---|---|---|
span | Span<StringName> | — |
Свойства3
CountСвойство
public int Count { get; }Возвращает количество раз, когда элемент встречается в массиве.
Чтобы подсчитать, сколько элементов в массиве удовлетворяют условию, см. reduce.
IsReadOnlyСвойство
public bool IsReadOnly { get; }Returns (Возврат) true если массив только считывается. Reckfell.Collections.Array.MakeReadOnly.
В C# массивы автоматически считываются только в том случае, если они указаны вместе с const Ключевое слово.
ItemСвойство
public Variant this[int index] { get; set; }Читает копию нативного Variant по индексу либо заменяет элемент копией присвоенного значения. Копия значения с контейнером может сохранять общие данные контейнера; индекс должен находиться в пределах Count.
Методы35
Addvoid
public void Add(Variant item);Добавляет к этому пункт. Reckfell.Collections.Array.
Это то же самое, что и append или push_back Исключено из Скрипта.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
item:: Variant Пункт добавить.
AddRange3 перегрузки
public void AddRange<T>(System.Collections.Generic.IEnumerable<T> collection);Добавляет элементы указанной коллекции к концу этой записи Reckfell.Collections.Array.
| Имя | Тип | По умолчанию |
|---|---|---|
collection | System.Collections.Generic.IEnumerable<T> | — |
collectionСбор Variant пункты добавить.
public void AddRange<T>(ReadOnlySpan<T> span);Добавляет элементы указанной коллекции к концу этой записи Reckfell.Collections.Array.
| Имя | Тип | По умолчанию |
|---|---|---|
span | ReadOnlySpan<T> | — |
spanПродолжительность Variant пункты добавить.
public void AddRange<T>(T[] array);Добавляет элементы указанного массива к концу этого Reckfell.Collections.Array.
| Имя | Тип | По умолчанию |
|---|---|---|
array | T[] | — |
arrayМножество Variant пункты добавить.
BinarySearch2 перегрузки
public int BinarySearch(Variant item);Найти индекс существующего значения с помощью двоичного поиска.
Если значение не присутствует в массиве, оно возвращает биту по стрелке
дополнение индекса ввода, в котором сохраняется порядок сортировки.
Примечание: Звонок Reckfell.Collections.Array.BinarySearch на непорочном
Неожиданное поведение приводит к массиву.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
itemОбъект, который нужно найти.
intУказатель позиции в массиве, если item найдена;
в противном случае отрицательное число, которое является битумным дополнением индекса
следующего элемента, который больше item или, если
не существует более крупного элемента, битумного дополнения Reckfell.Collections.Array.Count.
public int BinarySearch(int index, int count, Variant item);Найти индекс существующего значения с помощью двоичного поиска.
Если значение не присутствует в массиве, оно возвращает биту по стрелке
дополнение индекса ввода, в котором сохраняется порядок сортировки.
Примечание: Звонок Reckfell.Collections.Array.BinarySearch на
Несортированный массив приводит к неожиданному поведению.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
count | int | — |
item | Variant | — |
indexИсходный индекс диапазона поиска.
countДлина диапазона до поиска.
itemОбъект, который нужно найти.
intУказатель позиции в массиве, если item найдена;
в противном случае отрицательное число, которое является битумным дополнением индекса
следующего элемента, который больше item или, если
не существует более крупного элемента, битумного дополнения Reckfell.Collections.Array.Count.
Clearvoid
public void Clear();Удаляет все элементы из массива. Это эквивалентно использованию Reckfell.Collections.Array.Resize с размером 0.
Containsbool
public bool Contains(Variant item);Returns (Возврат) true если массив содержит заданное значение.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
item:: Variant вещь, которую нужно искать.
boolНеважно, содержит ли этот массив данный элемент.
CopyTovoid
public void CopyTo(Variant[] array, int arrayIndex);Копии элементов этого документа Reckfell.Collections.Array к данным
Variant С# массив, начиная с данного индекса.
| Имя | Тип | По умолчанию |
|---|---|---|
array | Variant[] | — |
arrayIndex | int | — |
arrayСкопировать массив.
arrayIndexНачнем с индекса.
Dispose2 перегрузки
public void Dispose();Исключает это Reckfell.Collections.Array.
public void Dispose(bool disposing);| Имя | Тип | По умолчанию |
|---|---|---|
disposing | bool | — |
DuplicateReckfell.Collections.Array
public Reckfell.Collections.Array Duplicate(bool deep = false);Создаёт новый внешний Array. При deep=false вложенные массивы и словари общие; deep=true копирует вложенные контейнеры, но не клонирует содержащиеся объекты движка.
| Имя | Тип | По умолчанию |
|---|---|---|
deep | bool | false |
deepКопировать ли вложенные контейнеры. Объекты движка остаются ссылками при любом значении.
Reckfell.Collections.ArrayНовый внешний Array с выбранной глубиной копирования контейнеров.
Fillvoid
public void Fill(Variant value);Назначает заданное value всем элементам массива.
Этот метод часто можно комбинировать с Reckfell.Collections.Array.Resize для создания массива с заданным размером и инициализированными элементами:
Reckfell.Collections.Array array = [];
array.Resize(5);
array.Fill(2);
ReckfellApi.Print(array); // Prints [2, 2, 2, 2, 2]Примечание: Если value является Variant, переданным по ссылке (производным от ReckfellObject, Reckfell.Collections.Array, Reckfell.Collections.Dictionary и т. д.), массив будет заполнен ссылками на одно и то же value, которые не являются дубликатами.
| Имя | Тип | По умолчанию |
|---|---|---|
value | Variant | — |
valueЗначение для заполнения массива.
GetEnumeratorSystem.Collections.Generic.IEnumerator<Variant>
public System.Collections.Generic.IEnumerator<Variant> GetEnumerator();Получает счетчик для этого Reckfell.Collections.Array.
System.Collections.Generic.IEnumerator<Variant>Счетчик.
GetSliceRangeReckfell.Collections.Array
public Reckfell.Collections.Array GetSliceRange(int start, int end, int step = 1, bool deep = false);Возвращает кусочек Reckfell.Collections.Array, от start
(включая) end (исключительно) в качестве нового Reckfell.Collections.Array.
Абсолютное значение start и end
будет зажата до размера массива.
Если: start или end отрицательный, они
будет относительно конца массива (т.е. arr.GetSliceRange(0, -2)
это короткая вещь для arr.GetSliceRange(0, arr.Count - 2)).
Если указывается, step - относительный индекс между источником
Это может быть отрицательно. start должно быть выше, чем
end. Например, [0, 1, 2, 3, 4, 5].GetSliceRange(5, 1, -2)
возврат [5, 3].
Если deep верно, каждый элемент будет копироваться по значению
а не путем ссылки.
| Имя | Тип | По умолчанию |
|---|---|---|
start | int | — |
end | int | — |
step | int | 1 |
deep | bool | false |
startИндекс нулевого значения, с которого начинается диапазон.
endИндекс, основанный на нулевом значении, на котором этот диапазон заканчивается.
stepОтносительный индекс между элементами источника.
deepЕсли true, выполняет глубокую копию.
Reckfell.Collections.ArrayНовый массив, содержащий элементы внутри диапазона кусочков.
IndexOf2 перегрузки
public int IndexOf(Variant item);Поиск массива для значения и возврат его индекса или -1 если не найдется.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
item:: Variant вещь, которую нужно искать.
intУказатель продукта или -1, если не найден.
public int IndexOf(Variant item, int index);Поиск массива для значения и возврат его индекса или -1 если не найдется.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
index | int | — |
item:: Variant вещь, которую нужно искать.
indexПервоначальный поисковый индекс для начала.
intУказатель продукта или -1, если не найден.
Insertvoid
public void Insert(int index, Variant item);Вставляет новый элемент (value) по указанному индексу (position) в массиве. position должен быть между 0 и size массива. Если отрицательно, position считается относительно конца массива.
Возвращает OK в случае успеха или одну из других констант Error, если этот метод не выполняется.
Примечание: Индекс каждого элемента после position необходимо сместить вперед, что может иметь заметные потери производительности, особенно в больших массивах.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
item | Variant | — |
indexУказатель, который следует вставить на.
item:: Variant Вставить пункт.
LastIndexOf2 перегрузки
public int LastIndexOf(Variant item);Поиск массива для значения в обратном порядке и возврат его индекса
или -1 если не найдется.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
item:: Variant вещь, которую нужно искать.
intУказатель продукта или -1, если не найден.
public int LastIndexOf(Variant item, int index);Поиск массива для значения в обратном порядке и возврат его индекса
или -1 если не найдется.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
index | int | — |
item:: Variant вещь, которую нужно искать.
indexПервоначальный поисковый индекс для начала.
intУказатель продукта или -1, если не найден.
MakeReadOnlyvoid
public void MakeReadOnly();Сделает массив только считываемым. Элементы массива не могут быть перегружены различными значениями, и их порядок не может измениться. Не применяется к таким встроенным элементам, как словари.
В C# массивы автоматически считываются только в том случае, если они указаны вместе с const Ключевое слово.
MaxVariant
public Variant Max();Возвращает максимальное значение, содержащееся в массиве, если все элементы можно сравнить. В противном случае возвращает null. См. также Reckfell.Collections.Array.Min.
Чтобы найти максимальное значение с помощью пользовательского компаратора, можно использовать reduce.
VariantМаксимальное значение, содержащееся в массиве.
MinVariant
public Variant Min();Возвращает минимальное значение, содержащееся в массиве, если все элементы можно сравнить. В противном случае возвращает null. См. также Reckfell.Collections.Array.Max.
VariantМинимальное значение, содержащееся в массиве.
PickRandomVariant
public Variant PickRandom();Возвращает случайный элемент из массива. Генерирует ошибку и возвращает null, если массив пуст.
Reckfell.Collections.Array array = [1, 2, 3.25f, "Hi"];
ReckfellApi.Print(array.PickRandom()); // May print 1, 2, 3.25, or "Hi".Примечание: Как и многие подобные функции в движке (например, ReckfellApi.Randi или Reckfell.Collections.Array.Shuffle), этот метод использует общее глобальное случайное начальное число. Чтобы получить предсказуемый результат от этого метода, см. ReckfellApi.Seed.
VariantСлучайный элемент из массива.
RecursiveEqualbool
public bool RecursiveEqual(Reckfell.Collections.Array other);Сравнит это Reckfell.Collections.Array против other
Reckfell.Collections.Array Рекурсивно. Возвращение true если:
Размеры и содержимое массивов равны, false
иначе.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Reckfell.Collections.Array | — |
otherДругой массив, который можно сравнить с.
booltrue если размеры и содержимое массивов равны,
false иначе.
Removebool
public bool Remove(Variant item);Удалить первое из указанных случаев item
от этого Reckfell.Collections.Array.
| Имя | Тип | По умолчанию |
|---|---|---|
item | Variant | — |
itemЗначение удаления.
boolRemoveAtvoid
public void RemoveAt(int index);Удаляет элемент из массива по заданному индексу (position). Если индекс выходит за пределы массива, этот метод завершается ошибкой. Если индекс отрицательный, position считается относительным к концу массива.
Если вам нужно вернуть удаленный элемент, используйте pop_at. Для удаления элемента по значению используйте erase вместо этого.
Примечание: Этот метод сдвигает индекс каждого элемента после position назад, что может заметно снизить производительность, особенно в больших массивах.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
indexУказатель элемента, подлежащего удалению.
ResizeError
public Error Resize(int newSize);Устанавливает количество элементов массива равным size. Если size меньше текущего размера массива, элементы в конце удаляются. Если size больше, добавляются новые элементы по умолчанию (обычно null) в зависимости от типа массива.
Возвращает OK в случае успеха или одну из следующих констант Error, если этот метод не срабатывает: ERR_LOCKED, если массив доступен только для чтения, ERR_INVALID_PARAMETER, если размер отрицательный, или ERR_OUT_OF_MEMORY, если выделение памяти не удается. Используйте size, чтобы узнать фактический размер массива после изменения размера.
Примечание: Вызов этого метода один раз и назначение новых значений выполняется быстрее, чем вызов append для каждого нового элемента.
| Имя | Тип | По умолчанию |
|---|---|---|
newSize | int | — |
newSizeНовый размер массива.
Reversevoid
public void Reverse();Меняет порядок всех элементов в массиве на обратный.
Shufflevoid
public void Shuffle();Перемешивает все элементы массива в случайном порядке.
Примечание: Как и многие подобные функции в движке (например, ReckfellApi.Randi или Reckfell.Collections.Array.PickRandom), этот метод использует общее глобальное случайное начальное число. Чтобы получить предсказуемый результат от этого метода, см. ReckfellApi.Seed.
Slice2 перегрузки
public Reckfell.Collections.Array Slice(int start);Возвращает новый Reckfell.Collections.Array, содержащий элементы этого массива, от индекса begin (включительно) до end (исключительно), каждые step элементов.
Если begin или end отрицательны, их значение относительно конца массива.
Если step отрицателен, этот метод выполняет итерацию по массиву в обратном порядке, возвращая срез, упорядоченный в обратном порядке. Чтобы это работало, begin должен быть больше end.
Если deep равен true, все вложенные элементы Reckfell.Collections.Array и Reckfell.Collections.Dictionary в срезе дублируются из оригинала, рекурсивно. См. также Reckfell.Collections.Array.Duplicate.
| Имя | Тип | По умолчанию |
|---|---|---|
start | int | — |
startИндекс нулевого значения, с которого начинается диапазон.
Reckfell.Collections.ArrayНовый массив, содержащий элементы внутри диапазона кусочков.
public Reckfell.Collections.Array Slice(int start, int length);Возвращает новый Reckfell.Collections.Array, содержащий элементы этого массива, от индекса begin (включительно) до end (исключительно), каждые step элементов.
Если begin или end отрицательны, их значение относительно конца массива.
Если step отрицателен, этот метод выполняет итерацию по массиву в обратном порядке, возвращая срез, упорядоченный в обратном порядке. Чтобы это работало, begin должен быть больше end.
Если deep равен true, все вложенные элементы Reckfell.Collections.Array и Reckfell.Collections.Dictionary в срезе дублируются из оригинала, рекурсивно. См. также Reckfell.Collections.Array.Duplicate.
| Имя | Тип | По умолчанию |
|---|---|---|
start | int | — |
length | int | — |
startИндекс нулевого значения, с которого начинается диапазон.
lengthДлина диапазона.
Reckfell.Collections.ArrayНовый массив, содержащий элементы внутри диапазона кусочков.
Sortvoid
public void Sort();Сортирует массив в порядке возрастания. Окончательный порядок зависит от сравнения "меньше" (<) между элементами.
Reckfell.Collections.Array numbers = [10, 5, 2.5, 8];
numbers.Sort();
ReckfellApi.Print(numbers); // Prints [2.5, 5, 8, 10]Примечание: Используемый алгоритм сортировки не является стабильным. Это означает, что эквивалентные элементы (такие как 2 и 2.0) могут иметь измененный порядок при вызове Reckfell.Collections.Array.Sort.
ToStringstring
public override string ToString();Преобразует это Reckfell.Collections.Array к а string.
stringA string представительство этого массива.
op_AdditionReckfell.Collections.Array
public static Reckfell.Collections.Array operator +(Reckfell.Collections.Array left, Reckfell.Collections.Array right);Сокращает два Reckfell.Collections.Arrays вместе, с right
добавлено к концу Reckfell.Collections.Array указано в left.
Например, [1, 2] + [3, 4] результаты: [1, 2, 3, 4].
| Имя | Тип | По умолчанию |
|---|---|---|
left | Reckfell.Collections.Array | — |
right | Reckfell.Collections.Array | — |
leftПервый массив.
rightВторой набор.
Reckfell.Collections.ArrayНовый Reckfell Аррей с содержимым обоих массивов.