class_array.rst 78 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/4.3/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/4.3/doc/classes/Array.xml.
  6. .. _class_Array:
  7. Array
  8. =====
  9. A built-in data structure that holds a sequence of elements.
  10. .. rst-class:: classref-introduction-group
  11. Description
  12. -----------
  13. An array data structure that can contain a sequence of elements of any :ref:`Variant<class_Variant>` type. Elements are accessed by a numerical index starting at 0. Negative indices are used to count from the back (-1 is the last element, -2 is the second to last, etc.).
  14. \ **Example:**\
  15. .. tabs::
  16. .. code-tab:: gdscript
  17. var array = ["First", 2, 3, "Last"]
  18. print(array[0]) # Prints "First"
  19. print(array[2]) # Prints 3
  20. print(array[-1]) # Prints "Last"
  21. array[1] = "Second"
  22. print(array[1]) # Prints "Second"
  23. print(array[-3]) # Prints "Second"
  24. .. code-tab:: csharp
  25. var array = new Godot.Collections.Array{"First", 2, 3, "Last"};
  26. GD.Print(array[0]); // Prints "First"
  27. GD.Print(array[2]); // Prints 3
  28. GD.Print(array[array.Count - 1]); // Prints "Last"
  29. array[2] = "Second";
  30. GD.Print(array[1]); // Prints "Second"
  31. GD.Print(array[array.Count - 3]); // Prints "Second"
  32. \ **Note:** Arrays are always passed by **reference**. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate<class_Array_method_duplicate>`.
  33. \ **Note:** Erasing elements while iterating over arrays is **not** supported and will result in unpredictable behavior.
  34. \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. :ref:`PackedInt64Array<class_PackedInt64Array>` versus ``Array[int]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`map<class_Array_method_map>`. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
  35. .. note::
  36. There are notable differences when using this API with C#. See :ref:`doc_c_sharp_differences` for more information.
  37. .. rst-class:: classref-reftable-group
  38. Constructors
  39. ------------
  40. .. table::
  41. :widths: auto
  42. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ ) |
  44. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ base\: :ref:`Array<class_Array>`, type\: :ref:`int<class_int>`, class_name\: :ref:`StringName<class_StringName>`, script\: :ref:`Variant<class_Variant>`\ ) |
  46. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`Array<class_Array>`\ ) |
  48. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) |
  50. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedColorArray<class_PackedColorArray>`\ ) |
  52. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |
  54. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`\ ) |
  56. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  57. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ ) |
  58. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  59. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedInt64Array<class_PackedInt64Array>`\ ) |
  60. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  61. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedStringArray<class_PackedStringArray>`\ ) |
  62. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  63. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ ) |
  64. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  65. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ ) |
  66. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  67. | :ref:`Array<class_Array>` | :ref:`Array<class_Array_constructor_Array>`\ (\ from\: :ref:`PackedVector4Array<class_PackedVector4Array>`\ ) |
  68. +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  69. .. rst-class:: classref-reftable-group
  70. Methods
  71. -------
  72. .. table::
  73. :widths: auto
  74. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  75. | :ref:`bool<class_bool>` | :ref:`all<class_Array_method_all>`\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| |
  76. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  77. | :ref:`bool<class_bool>` | :ref:`any<class_Array_method_any>`\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| |
  78. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  79. | |void| | :ref:`append<class_Array_method_append>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |
  80. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  81. | |void| | :ref:`append_array<class_Array_method_append_array>`\ (\ array\: :ref:`Array<class_Array>`\ ) |
  82. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | |void| | :ref:`assign<class_Array_method_assign>`\ (\ array\: :ref:`Array<class_Array>`\ ) |
  84. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | :ref:`Variant<class_Variant>` | :ref:`back<class_Array_method_back>`\ (\ ) |const| |
  86. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | :ref:`int<class_int>` | :ref:`bsearch<class_Array_method_bsearch>`\ (\ value\: :ref:`Variant<class_Variant>`, before\: :ref:`bool<class_bool>` = true\ ) |const| |
  88. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  89. | :ref:`int<class_int>` | :ref:`bsearch_custom<class_Array_method_bsearch_custom>`\ (\ value\: :ref:`Variant<class_Variant>`, func\: :ref:`Callable<class_Callable>`, before\: :ref:`bool<class_bool>` = true\ ) |const| |
  90. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  91. | |void| | :ref:`clear<class_Array_method_clear>`\ (\ ) |
  92. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  93. | :ref:`int<class_int>` | :ref:`count<class_Array_method_count>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |const| |
  94. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  95. | :ref:`Array<class_Array>` | :ref:`duplicate<class_Array_method_duplicate>`\ (\ deep\: :ref:`bool<class_bool>` = false\ ) |const| |
  96. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  97. | |void| | :ref:`erase<class_Array_method_erase>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |
  98. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  99. | |void| | :ref:`fill<class_Array_method_fill>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |
  100. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  101. | :ref:`Array<class_Array>` | :ref:`filter<class_Array_method_filter>`\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| |
  102. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  103. | :ref:`int<class_int>` | :ref:`find<class_Array_method_find>`\ (\ what\: :ref:`Variant<class_Variant>`, from\: :ref:`int<class_int>` = 0\ ) |const| |
  104. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  105. | :ref:`Variant<class_Variant>` | :ref:`front<class_Array_method_front>`\ (\ ) |const| |
  106. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  107. | :ref:`int<class_int>` | :ref:`get_typed_builtin<class_Array_method_get_typed_builtin>`\ (\ ) |const| |
  108. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  109. | :ref:`StringName<class_StringName>` | :ref:`get_typed_class_name<class_Array_method_get_typed_class_name>`\ (\ ) |const| |
  110. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  111. | :ref:`Variant<class_Variant>` | :ref:`get_typed_script<class_Array_method_get_typed_script>`\ (\ ) |const| |
  112. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  113. | :ref:`bool<class_bool>` | :ref:`has<class_Array_method_has>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |const| |
  114. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  115. | :ref:`int<class_int>` | :ref:`hash<class_Array_method_hash>`\ (\ ) |const| |
  116. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  117. | :ref:`int<class_int>` | :ref:`insert<class_Array_method_insert>`\ (\ position\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`\ ) |
  118. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  119. | :ref:`bool<class_bool>` | :ref:`is_empty<class_Array_method_is_empty>`\ (\ ) |const| |
  120. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  121. | :ref:`bool<class_bool>` | :ref:`is_read_only<class_Array_method_is_read_only>`\ (\ ) |const| |
  122. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  123. | :ref:`bool<class_bool>` | :ref:`is_same_typed<class_Array_method_is_same_typed>`\ (\ array\: :ref:`Array<class_Array>`\ ) |const| |
  124. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  125. | :ref:`bool<class_bool>` | :ref:`is_typed<class_Array_method_is_typed>`\ (\ ) |const| |
  126. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  127. | |void| | :ref:`make_read_only<class_Array_method_make_read_only>`\ (\ ) |
  128. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  129. | :ref:`Array<class_Array>` | :ref:`map<class_Array_method_map>`\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| |
  130. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  131. | :ref:`Variant<class_Variant>` | :ref:`max<class_Array_method_max>`\ (\ ) |const| |
  132. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  133. | :ref:`Variant<class_Variant>` | :ref:`min<class_Array_method_min>`\ (\ ) |const| |
  134. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  135. | :ref:`Variant<class_Variant>` | :ref:`pick_random<class_Array_method_pick_random>`\ (\ ) |const| |
  136. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  137. | :ref:`Variant<class_Variant>` | :ref:`pop_at<class_Array_method_pop_at>`\ (\ position\: :ref:`int<class_int>`\ ) |
  138. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  139. | :ref:`Variant<class_Variant>` | :ref:`pop_back<class_Array_method_pop_back>`\ (\ ) |
  140. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  141. | :ref:`Variant<class_Variant>` | :ref:`pop_front<class_Array_method_pop_front>`\ (\ ) |
  142. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  143. | |void| | :ref:`push_back<class_Array_method_push_back>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |
  144. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  145. | |void| | :ref:`push_front<class_Array_method_push_front>`\ (\ value\: :ref:`Variant<class_Variant>`\ ) |
  146. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  147. | :ref:`Variant<class_Variant>` | :ref:`reduce<class_Array_method_reduce>`\ (\ method\: :ref:`Callable<class_Callable>`, accum\: :ref:`Variant<class_Variant>` = null\ ) |const| |
  148. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  149. | |void| | :ref:`remove_at<class_Array_method_remove_at>`\ (\ position\: :ref:`int<class_int>`\ ) |
  150. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  151. | :ref:`int<class_int>` | :ref:`resize<class_Array_method_resize>`\ (\ size\: :ref:`int<class_int>`\ ) |
  152. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  153. | |void| | :ref:`reverse<class_Array_method_reverse>`\ (\ ) |
  154. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  155. | :ref:`int<class_int>` | :ref:`rfind<class_Array_method_rfind>`\ (\ what\: :ref:`Variant<class_Variant>`, from\: :ref:`int<class_int>` = -1\ ) |const| |
  156. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  157. | |void| | :ref:`shuffle<class_Array_method_shuffle>`\ (\ ) |
  158. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  159. | :ref:`int<class_int>` | :ref:`size<class_Array_method_size>`\ (\ ) |const| |
  160. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  161. | :ref:`Array<class_Array>` | :ref:`slice<class_Array_method_slice>`\ (\ begin\: :ref:`int<class_int>`, end\: :ref:`int<class_int>` = 2147483647, step\: :ref:`int<class_int>` = 1, deep\: :ref:`bool<class_bool>` = false\ ) |const| |
  162. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  163. | |void| | :ref:`sort<class_Array_method_sort>`\ (\ ) |
  164. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  165. | |void| | :ref:`sort_custom<class_Array_method_sort_custom>`\ (\ func\: :ref:`Callable<class_Callable>`\ ) |
  166. +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  167. .. rst-class:: classref-reftable-group
  168. Operators
  169. ---------
  170. .. table::
  171. :widths: auto
  172. +-------------------------------+----------------------------------------------------------------------------------------------+
  173. | :ref:`bool<class_bool>` | :ref:`operator !=<class_Array_operator_neq_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  174. +-------------------------------+----------------------------------------------------------------------------------------------+
  175. | :ref:`Array<class_Array>` | :ref:`operator +<class_Array_operator_sum_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  176. +-------------------------------+----------------------------------------------------------------------------------------------+
  177. | :ref:`bool<class_bool>` | :ref:`operator \<<class_Array_operator_lt_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  178. +-------------------------------+----------------------------------------------------------------------------------------------+
  179. | :ref:`bool<class_bool>` | :ref:`operator \<=<class_Array_operator_lte_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  180. +-------------------------------+----------------------------------------------------------------------------------------------+
  181. | :ref:`bool<class_bool>` | :ref:`operator ==<class_Array_operator_eq_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  182. +-------------------------------+----------------------------------------------------------------------------------------------+
  183. | :ref:`bool<class_bool>` | :ref:`operator ><class_Array_operator_gt_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  184. +-------------------------------+----------------------------------------------------------------------------------------------+
  185. | :ref:`bool<class_bool>` | :ref:`operator >=<class_Array_operator_gte_Array>`\ (\ right\: :ref:`Array<class_Array>`\ ) |
  186. +-------------------------------+----------------------------------------------------------------------------------------------+
  187. | :ref:`Variant<class_Variant>` | :ref:`operator []<class_Array_operator_idx_int>`\ (\ index\: :ref:`int<class_int>`\ ) |
  188. +-------------------------------+----------------------------------------------------------------------------------------------+
  189. .. rst-class:: classref-section-separator
  190. ----
  191. .. rst-class:: classref-descriptions-group
  192. Constructor Descriptions
  193. ------------------------
  194. .. _class_Array_constructor_Array:
  195. .. rst-class:: classref-constructor
  196. :ref:`Array<class_Array>` **Array**\ (\ ) :ref:`๐Ÿ”—<class_Array_constructor_Array>`
  197. Constructs an empty **Array**.
  198. .. rst-class:: classref-item-separator
  199. ----
  200. .. rst-class:: classref-constructor
  201. :ref:`Array<class_Array>` **Array**\ (\ base\: :ref:`Array<class_Array>`, type\: :ref:`int<class_int>`, class_name\: :ref:`StringName<class_StringName>`, script\: :ref:`Variant<class_Variant>`\ )
  202. Creates a typed array from the ``base`` array. A typed array can only contain elements of the given type, or that inherit from the given class, as described by this constructor's parameters:
  203. - ``type`` is the built-in :ref:`Variant<class_Variant>` type, as one the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` constants.
  204. - ``class_name`` is the built-in class name (see :ref:`Object.get_class<class_Object_method_get_class>`).
  205. - ``script`` is the associated script. It must be a :ref:`Script<class_Script>` instance or ``null``.
  206. If ``type`` is not :ref:`@GlobalScope.TYPE_OBJECT<class_@GlobalScope_constant_TYPE_OBJECT>`, ``class_name`` must be an empty :ref:`StringName<class_StringName>` and ``script`` must be ``null``.
  207. ::
  208. class_name Sword
  209. extends Node
  210. class Stats:
  211. pass
  212. func _ready():
  213. var a = Array([], TYPE_INT, "", null) # Array[int]
  214. var b = Array([], TYPE_OBJECT, "Node", null) # Array[Node]
  215. var c = Array([], TYPE_OBJECT, "Node", Sword) # Array[Sword]
  216. var d = Array([], TYPE_OBJECT, "RefCounted", Stats) # Array[Stats]
  217. The ``base`` array's elements are converted when necessary. If this is not possible or ``base`` is already typed, this constructor fails and returns an empty **Array**.
  218. In GDScript, this constructor is usually not necessary, as it is possible to create a typed array through static typing:
  219. ::
  220. var numbers: Array[float] = []
  221. var children: Array[Node] = [$Node, $Sprite2D, $RigidBody3D]
  222. var integers: Array[int] = [0.2, 4.5, -2.0]
  223. print(integers) # Prints [0, 4, -2]
  224. .. rst-class:: classref-item-separator
  225. ----
  226. .. rst-class:: classref-constructor
  227. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`Array<class_Array>`\ )
  228. Returns the same array as ``from``. If you need a copy of the array, use :ref:`duplicate<class_Array_method_duplicate>`.
  229. .. rst-class:: classref-item-separator
  230. ----
  231. .. rst-class:: classref-constructor
  232. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
  233. Constructs an array from a :ref:`PackedByteArray<class_PackedByteArray>`.
  234. .. rst-class:: classref-item-separator
  235. ----
  236. .. rst-class:: classref-constructor
  237. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedColorArray<class_PackedColorArray>`\ )
  238. Constructs an array from a :ref:`PackedColorArray<class_PackedColorArray>`.
  239. .. rst-class:: classref-item-separator
  240. ----
  241. .. rst-class:: classref-constructor
  242. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ )
  243. Constructs an array from a :ref:`PackedFloat32Array<class_PackedFloat32Array>`.
  244. .. rst-class:: classref-item-separator
  245. ----
  246. .. rst-class:: classref-constructor
  247. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`\ )
  248. Constructs an array from a :ref:`PackedFloat64Array<class_PackedFloat64Array>`.
  249. .. rst-class:: classref-item-separator
  250. ----
  251. .. rst-class:: classref-constructor
  252. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ )
  253. Constructs an array from a :ref:`PackedInt32Array<class_PackedInt32Array>`.
  254. .. rst-class:: classref-item-separator
  255. ----
  256. .. rst-class:: classref-constructor
  257. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedInt64Array<class_PackedInt64Array>`\ )
  258. Constructs an array from a :ref:`PackedInt64Array<class_PackedInt64Array>`.
  259. .. rst-class:: classref-item-separator
  260. ----
  261. .. rst-class:: classref-constructor
  262. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedStringArray<class_PackedStringArray>`\ )
  263. Constructs an array from a :ref:`PackedStringArray<class_PackedStringArray>`.
  264. .. rst-class:: classref-item-separator
  265. ----
  266. .. rst-class:: classref-constructor
  267. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedVector2Array<class_PackedVector2Array>`\ )
  268. Constructs an array from a :ref:`PackedVector2Array<class_PackedVector2Array>`.
  269. .. rst-class:: classref-item-separator
  270. ----
  271. .. rst-class:: classref-constructor
  272. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ )
  273. Constructs an array from a :ref:`PackedVector3Array<class_PackedVector3Array>`.
  274. .. rst-class:: classref-item-separator
  275. ----
  276. .. rst-class:: classref-constructor
  277. :ref:`Array<class_Array>` **Array**\ (\ from\: :ref:`PackedVector4Array<class_PackedVector4Array>`\ )
  278. Constructs an array from a :ref:`PackedVector4Array<class_PackedVector4Array>`.
  279. .. rst-class:: classref-section-separator
  280. ----
  281. .. rst-class:: classref-descriptions-group
  282. Method Descriptions
  283. -------------------
  284. .. _class_Array_method_all:
  285. .. rst-class:: classref-method
  286. :ref:`bool<class_bool>` **all**\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_all>`
  287. Calls the given :ref:`Callable<class_Callable>` on each element in the array and returns ``true`` if the :ref:`Callable<class_Callable>` returns ``true`` for *all* elements in the array. If the :ref:`Callable<class_Callable>` returns ``false`` for one array element or more, this method returns ``false``.
  288. The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the current array element) and return a :ref:`bool<class_bool>`.
  289. .. tabs::
  290. .. code-tab:: gdscript
  291. func greater_than_5(number):
  292. return number > 5
  293. func _ready():
  294. print([6, 10, 6].all(greater_than_5)) # Prints true (3/3 elements evaluate to true).
  295. print([4, 10, 4].all(greater_than_5)) # Prints false (1/3 elements evaluate to true).
  296. print([4, 4, 4].all(greater_than_5)) # Prints false (0/3 elements evaluate to true).
  297. print([].all(greater_than_5)) # Prints true (0/0 elements evaluate to true).
  298. # Same as the first line above, but using a lambda function.
  299. print([6, 10, 6].all(func(element): return element > 5)) # Prints true
  300. .. code-tab:: csharp
  301. private static bool GreaterThan5(int number)
  302. {
  303. return number > 5;
  304. }
  305. public override void _Ready()
  306. {
  307. // Prints true (3/3 elements evaluate to true).
  308. GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }.All(GreaterThan5));
  309. // Prints false (1/3 elements evaluate to true).
  310. GD.Print(new Godot.Collections.Array>int< { 4, 10, 4 }.All(GreaterThan5));
  311. // Prints false (0/3 elements evaluate to true).
  312. GD.Print(new Godot.Collections.Array>int< { 4, 4, 4 }.All(GreaterThan5));
  313. // Prints true (0/0 elements evaluate to true).
  314. GD.Print(new Godot.Collections.Array>int< { }.All(GreaterThan5));
  315. // Same as the first line above, but using a lambda function.
  316. GD.Print(new Godot.Collections.Array>int< { 6, 10, 6 }.All(element => element > 5)); // Prints true
  317. }
  318. See also :ref:`any<class_Array_method_any>`, :ref:`filter<class_Array_method_filter>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
  319. \ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
  320. \ **Note:** For an empty array, this method `always <https://en.wikipedia.org/wiki/Vacuous_truth>`__ returns ``true``.
  321. .. rst-class:: classref-item-separator
  322. ----
  323. .. _class_Array_method_any:
  324. .. rst-class:: classref-method
  325. :ref:`bool<class_bool>` **any**\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_any>`
  326. Calls the given :ref:`Callable<class_Callable>` on each element in the array and returns ``true`` if the :ref:`Callable<class_Callable>` returns ``true`` for *one or more* elements in the array. If the :ref:`Callable<class_Callable>` returns ``false`` for all elements in the array, this method returns ``false``.
  327. The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the current array element) and return a :ref:`bool<class_bool>`.
  328. ::
  329. func greater_than_5(number):
  330. return number > 5
  331. func _ready():
  332. print([6, 10, 6].any(greater_than_5)) # Prints true (3 elements evaluate to true).
  333. print([4, 10, 4].any(greater_than_5)) # Prints true (1 elements evaluate to true).
  334. print([4, 4, 4].any(greater_than_5)) # Prints false (0 elements evaluate to true).
  335. print([].any(greater_than_5)) # Prints false (0 elements evaluate to true).
  336. # Same as the first line above, but using a lambda function.
  337. print([6, 10, 6].any(func(number): return number > 5)) # Prints true
  338. See also :ref:`all<class_Array_method_all>`, :ref:`filter<class_Array_method_filter>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
  339. \ **Note:** Unlike relying on the size of an array returned by :ref:`filter<class_Array_method_filter>`, this method will return as early as possible to improve performance (especially with large arrays).
  340. \ **Note:** For an empty array, this method always returns ``false``.
  341. .. rst-class:: classref-item-separator
  342. ----
  343. .. _class_Array_method_append:
  344. .. rst-class:: classref-method
  345. |void| **append**\ (\ value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_append>`
  346. Appends ``value`` at the end of the array (alias of :ref:`push_back<class_Array_method_push_back>`).
  347. .. rst-class:: classref-item-separator
  348. ----
  349. .. _class_Array_method_append_array:
  350. .. rst-class:: classref-method
  351. |void| **append_array**\ (\ array\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_method_append_array>`
  352. Appends another ``array`` at the end of this array.
  353. ::
  354. var numbers = [1, 2, 3]
  355. var extra = [4, 5, 6]
  356. numbers.append_array(extra)
  357. print(numbers) # Prints [1, 2, 3, 4, 5, 6]
  358. .. rst-class:: classref-item-separator
  359. ----
  360. .. _class_Array_method_assign:
  361. .. rst-class:: classref-method
  362. |void| **assign**\ (\ array\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_method_assign>`
  363. Assigns elements of another ``array`` into the array. Resizes the array to match ``array``. Performs type conversions if the array is typed.
  364. .. rst-class:: classref-item-separator
  365. ----
  366. .. _class_Array_method_back:
  367. .. rst-class:: classref-method
  368. :ref:`Variant<class_Variant>` **back**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_back>`
  369. Returns the last element of the array. If the array is empty, fails and returns ``null``. See also :ref:`front<class_Array_method_front>`.
  370. \ **Note:** Unlike with the ``[]`` operator (``array[-1]``), an error is generated without stopping project execution.
  371. .. rst-class:: classref-item-separator
  372. ----
  373. .. _class_Array_method_bsearch:
  374. .. rst-class:: classref-method
  375. :ref:`int<class_int>` **bsearch**\ (\ value\: :ref:`Variant<class_Variant>`, before\: :ref:`bool<class_bool>` = true\ ) |const| :ref:`๐Ÿ”—<class_Array_method_bsearch>`
  376. Returns the index of ``value`` in the sorted array. If it cannot be found, returns where ``value`` should be inserted to keep the array sorted. The algorithm used is `binary search <https://en.wikipedia.org/wiki/Binary_search_algorithm>`__.
  377. If ``before`` is ``true`` (as by default), the returned index comes before all existing elements equal to ``value`` in the array.
  378. ::
  379. var numbers = [2, 4, 8, 10]
  380. var idx = numbers.bsearch(7)
  381. numbers.insert(idx, 7)
  382. print(numbers) # Prints [2, 4, 7, 8, 10]
  383. var fruits = ["Apple", "Lemon", "Lemon", "Orange"]
  384. print(fruits.bsearch("Lemon", true)) # Prints 1, points at the first "Lemon".
  385. print(fruits.bsearch("Lemon", false)) # Prints 3, points at "Orange".
  386. \ **Note:** Calling :ref:`bsearch<class_Array_method_bsearch>` on an *unsorted* array will result in unexpected behavior. Use :ref:`sort<class_Array_method_sort>` before calling this method.
  387. .. rst-class:: classref-item-separator
  388. ----
  389. .. _class_Array_method_bsearch_custom:
  390. .. rst-class:: classref-method
  391. :ref:`int<class_int>` **bsearch_custom**\ (\ value\: :ref:`Variant<class_Variant>`, func\: :ref:`Callable<class_Callable>`, before\: :ref:`bool<class_bool>` = true\ ) |const| :ref:`๐Ÿ”—<class_Array_method_bsearch_custom>`
  392. Returns the index of ``value`` in the sorted array. If it cannot be found, returns where ``value`` should be inserted to keep the array sorted (using ``func`` for the comparisons). The algorithm used is `binary search <https://en.wikipedia.org/wiki/Binary_search_algorithm>`__.
  393. Similar to :ref:`sort_custom<class_Array_method_sort_custom>`, ``func`` is called as many times as necessary, receiving one array element and ``value`` as arguments. The function should return ``true`` if the array element should be *behind* ``value``, otherwise it should return ``false``.
  394. If ``before`` is ``true`` (as by default), the returned index comes before all existing elements equal to ``value`` in the array.
  395. ::
  396. func sort_by_amount(a, b):
  397. if a[1] < b[1]:
  398. return true
  399. return false
  400. func _ready():
  401. var my_items = [["Tomato", 2], ["Kiwi", 5], ["Rice", 9]]
  402. var apple = ["Apple", 5]
  403. # "Apple" is inserted before "Kiwi".
  404. my_items.insert(my_items.bsearch_custom(apple, sort_by_amount, true), apple)
  405. var banana = ["Banana", 5]
  406. # "Banana" is inserted after "Kiwi".
  407. my_items.insert(my_items.bsearch_custom(banana, sort_by_amount, false), banana)
  408. # Prints [["Tomato", 2], ["Apple", 5], ["Kiwi", 5], ["Banana", 5], ["Rice", 9]]
  409. print(my_items)
  410. \ **Note:** Calling :ref:`bsearch_custom<class_Array_method_bsearch_custom>` on an *unsorted* array will result in unexpected behavior. Use :ref:`sort_custom<class_Array_method_sort_custom>` with ``func`` before calling this method.
  411. .. rst-class:: classref-item-separator
  412. ----
  413. .. _class_Array_method_clear:
  414. .. rst-class:: classref-method
  415. |void| **clear**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_clear>`
  416. Removes all elements from the array. This is equivalent to using :ref:`resize<class_Array_method_resize>` with a size of ``0``.
  417. .. rst-class:: classref-item-separator
  418. ----
  419. .. _class_Array_method_count:
  420. .. rst-class:: classref-method
  421. :ref:`int<class_int>` **count**\ (\ value\: :ref:`Variant<class_Variant>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_count>`
  422. Returns the number of times an element is in the array.
  423. .. rst-class:: classref-item-separator
  424. ----
  425. .. _class_Array_method_duplicate:
  426. .. rst-class:: classref-method
  427. :ref:`Array<class_Array>` **duplicate**\ (\ deep\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`๐Ÿ”—<class_Array_method_duplicate>`
  428. Returns a new copy of the array.
  429. By default, a **shallow** copy is returned: all nested **Array** and :ref:`Dictionary<class_Dictionary>` elements are shared with the original array. Modifying them in one array will also affect them in the other.
  430. If ``deep`` is ``true``, a **deep** copy is returned: all nested arrays and dictionaries are also duplicated (recursively).
  431. .. rst-class:: classref-item-separator
  432. ----
  433. .. _class_Array_method_erase:
  434. .. rst-class:: classref-method
  435. |void| **erase**\ (\ value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_erase>`
  436. Finds and removes the first occurrence of ``value`` from the array. If ``value`` does not exist in the array, nothing happens. To remove an element by index, use :ref:`remove_at<class_Array_method_remove_at>` instead.
  437. \ **Note:** This method shifts every element's index after the removed ``value`` back, which may have a noticeable performance cost, especially on larger arrays.
  438. \ **Note:** Erasing elements while iterating over arrays is **not** supported and will result in unpredictable behavior.
  439. .. rst-class:: classref-item-separator
  440. ----
  441. .. _class_Array_method_fill:
  442. .. rst-class:: classref-method
  443. |void| **fill**\ (\ value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_fill>`
  444. Assigns the given ``value`` to all elements in the array.
  445. This method can often be combined with :ref:`resize<class_Array_method_resize>` to create an array with a given size and initialized elements:
  446. .. tabs::
  447. .. code-tab:: gdscript
  448. var array = []
  449. array.resize(5)
  450. array.fill(2)
  451. print(array) # Prints [2, 2, 2, 2, 2]
  452. .. code-tab:: csharp
  453. var array = new Godot.Collections.Array();
  454. array.Resize(5);
  455. array.Fill(2);
  456. GD.Print(array); // Prints [2, 2, 2, 2, 2]
  457. \ **Note:** If ``value`` is a :ref:`Variant<class_Variant>` passed by reference (:ref:`Object<class_Object>`-derived, **Array**, :ref:`Dictionary<class_Dictionary>`, etc.), the array will be filled with references to the same ``value``, which are not duplicates.
  458. .. rst-class:: classref-item-separator
  459. ----
  460. .. _class_Array_method_filter:
  461. .. rst-class:: classref-method
  462. :ref:`Array<class_Array>` **filter**\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_filter>`
  463. Calls the given :ref:`Callable<class_Callable>` on each element in the array and returns a new, filtered **Array**.
  464. The ``method`` receives one of the array elements as an argument, and should return ``true`` to add the element to the filtered array, or ``false`` to exclude it.
  465. ::
  466. func is_even(number):
  467. return number % 2 == 0
  468. func _ready():
  469. print([1, 4, 5, 8].filter(is_even)) # Prints [4, 8]
  470. # Same as above, but using a lambda function.
  471. print([1, 4, 5, 8].filter(func(number): return number % 2 == 0))
  472. See also :ref:`any<class_Array_method_any>`, :ref:`all<class_Array_method_all>`, :ref:`map<class_Array_method_map>` and :ref:`reduce<class_Array_method_reduce>`.
  473. .. rst-class:: classref-item-separator
  474. ----
  475. .. _class_Array_method_find:
  476. .. rst-class:: classref-method
  477. :ref:`int<class_int>` **find**\ (\ what\: :ref:`Variant<class_Variant>`, from\: :ref:`int<class_int>` = 0\ ) |const| :ref:`๐Ÿ”—<class_Array_method_find>`
  478. Returns the index of the **first** occurrence of ``what`` in this array, or ``-1`` if there are none. The search's start can be specified with ``from``, continuing to the end of the array.
  479. \ **Note:** If you just want to know whether the array contains ``what``, use :ref:`has<class_Array_method_has>` (``Contains`` in C#). In GDScript, you may also use the ``in`` operator.
  480. \ **Note:** For performance reasons, the search is affected by ``what``'s :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>`. For example, ``7`` (:ref:`int<class_int>`) and ``7.0`` (:ref:`float<class_float>`) are not considered equal for this method.
  481. .. rst-class:: classref-item-separator
  482. ----
  483. .. _class_Array_method_front:
  484. .. rst-class:: classref-method
  485. :ref:`Variant<class_Variant>` **front**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_front>`
  486. Returns the first element of the array. If the array is empty, fails and returns ``null``. See also :ref:`back<class_Array_method_back>`.
  487. \ **Note:** Unlike with the ``[]`` operator (``array[0]``), an error is generated without stopping project execution.
  488. .. rst-class:: classref-item-separator
  489. ----
  490. .. _class_Array_method_get_typed_builtin:
  491. .. rst-class:: classref-method
  492. :ref:`int<class_int>` **get_typed_builtin**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_get_typed_builtin>`
  493. Returns the built-in :ref:`Variant<class_Variant>` type of the typed array as a :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` constant. If the array is not typed, returns :ref:`@GlobalScope.TYPE_NIL<class_@GlobalScope_constant_TYPE_NIL>`. See also :ref:`is_typed<class_Array_method_is_typed>`.
  494. .. rst-class:: classref-item-separator
  495. ----
  496. .. _class_Array_method_get_typed_class_name:
  497. .. rst-class:: classref-method
  498. :ref:`StringName<class_StringName>` **get_typed_class_name**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_get_typed_class_name>`
  499. Returns the **built-in** class name of the typed array, if the built-in :ref:`Variant<class_Variant>` type :ref:`@GlobalScope.TYPE_OBJECT<class_@GlobalScope_constant_TYPE_OBJECT>`. Otherwise, returns an empty :ref:`StringName<class_StringName>`. See also :ref:`is_typed<class_Array_method_is_typed>` and :ref:`Object.get_class<class_Object_method_get_class>`.
  500. .. rst-class:: classref-item-separator
  501. ----
  502. .. _class_Array_method_get_typed_script:
  503. .. rst-class:: classref-method
  504. :ref:`Variant<class_Variant>` **get_typed_script**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_get_typed_script>`
  505. Returns the :ref:`Script<class_Script>` instance associated with this typed array, or ``null`` if it does not exist. See also :ref:`is_typed<class_Array_method_is_typed>`.
  506. .. rst-class:: classref-item-separator
  507. ----
  508. .. _class_Array_method_has:
  509. .. rst-class:: classref-method
  510. :ref:`bool<class_bool>` **has**\ (\ value\: :ref:`Variant<class_Variant>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_has>`
  511. Returns ``true`` if the array contains the given ``value``.
  512. .. tabs::
  513. .. code-tab:: gdscript
  514. print(["inside", 7].has("inside")) # Prints true
  515. print(["inside", 7].has("outside")) # Prints false
  516. print(["inside", 7].has(7)) # Prints true
  517. print(["inside", 7].has("7")) # Prints false
  518. .. code-tab:: csharp
  519. var arr = new Godot.Collections.Array { "inside", 7 };
  520. // By C# convention, this method is renamed to `Contains`.
  521. GD.Print(arr.Contains("inside")); // Prints true
  522. GD.Print(arr.Contains("outside")); // Prints false
  523. GD.Print(arr.Contains(7)); // Prints true
  524. GD.Print(arr.Contains("7")); // Prints false
  525. In GDScript, this is equivalent to the ``in`` operator:
  526. ::
  527. if 4 in [2, 4, 6, 8]:
  528. print("4 is here!") # Will be printed.
  529. \ **Note:** For performance reasons, the search is affected by the ``value``'s :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>`. For example, ``7`` (:ref:`int<class_int>`) and ``7.0`` (:ref:`float<class_float>`) are not considered equal for this method.
  530. .. rst-class:: classref-item-separator
  531. ----
  532. .. _class_Array_method_hash:
  533. .. rst-class:: classref-method
  534. :ref:`int<class_int>` **hash**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_hash>`
  535. Returns a hashed 32-bit integer value representing the array and its contents.
  536. \ **Note:** Arrays with equal hash values are *not* guaranteed to be the same, as a result of hash collisions. On the countrary, arrays with different hash values are guaranteed to be different.
  537. .. rst-class:: classref-item-separator
  538. ----
  539. .. _class_Array_method_insert:
  540. .. rst-class:: classref-method
  541. :ref:`int<class_int>` **insert**\ (\ position\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_insert>`
  542. Inserts a new element (``value``) at a given index (``position``) in the array. ``position`` should be between ``0`` and the array's :ref:`size<class_Array_method_size>`.
  543. Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` constants if this method fails.
  544. \ **Note:** Every element's index after ``position`` needs to be shifted forward, which may have a noticeable performance cost, especially on larger arrays.
  545. .. rst-class:: classref-item-separator
  546. ----
  547. .. _class_Array_method_is_empty:
  548. .. rst-class:: classref-method
  549. :ref:`bool<class_bool>` **is_empty**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_is_empty>`
  550. Returns ``true`` if the array is empty (``[]``). See also :ref:`size<class_Array_method_size>`.
  551. .. rst-class:: classref-item-separator
  552. ----
  553. .. _class_Array_method_is_read_only:
  554. .. rst-class:: classref-method
  555. :ref:`bool<class_bool>` **is_read_only**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_is_read_only>`
  556. Returns ``true`` if the array is read-only. See :ref:`make_read_only<class_Array_method_make_read_only>`.
  557. In GDScript, arrays are automatically read-only if declared with the ``const`` keyword.
  558. .. rst-class:: classref-item-separator
  559. ----
  560. .. _class_Array_method_is_same_typed:
  561. .. rst-class:: classref-method
  562. :ref:`bool<class_bool>` **is_same_typed**\ (\ array\: :ref:`Array<class_Array>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_is_same_typed>`
  563. Returns ``true`` if this array is typed the same as the given ``array``. See also :ref:`is_typed<class_Array_method_is_typed>`.
  564. .. rst-class:: classref-item-separator
  565. ----
  566. .. _class_Array_method_is_typed:
  567. .. rst-class:: classref-method
  568. :ref:`bool<class_bool>` **is_typed**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_is_typed>`
  569. Returns ``true`` if the array is typed. Typed arrays can only contain elements of a specific type, as defined by the typed array constructor. The methods of a typed array are still expected to return a generic :ref:`Variant<class_Variant>`.
  570. In GDScript, it is possible to define a typed array with static typing:
  571. ::
  572. var numbers: Array[float] = [0.2, 4.2, -2.0]
  573. print(numbers.is_typed()) # Prints true
  574. .. rst-class:: classref-item-separator
  575. ----
  576. .. _class_Array_method_make_read_only:
  577. .. rst-class:: classref-method
  578. |void| **make_read_only**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_make_read_only>`
  579. Makes the array read-only. The array's elements cannot be overridden with different values, and their order cannot change. Does not apply to nested elements, such as dictionaries.
  580. In GDScript, arrays are automatically read-only if declared with the ``const`` keyword.
  581. .. rst-class:: classref-item-separator
  582. ----
  583. .. _class_Array_method_map:
  584. .. rst-class:: classref-method
  585. :ref:`Array<class_Array>` **map**\ (\ method\: :ref:`Callable<class_Callable>`\ ) |const| :ref:`๐Ÿ”—<class_Array_method_map>`
  586. Calls the given :ref:`Callable<class_Callable>` for each element in the array and returns a new array filled with values returned by the ``method``.
  587. The ``method`` should take one :ref:`Variant<class_Variant>` parameter (the current array element) and can return any :ref:`Variant<class_Variant>`.
  588. ::
  589. func double(number):
  590. return number * 2
  591. func _ready():
  592. print([1, 2, 3].map(double)) # Prints [2, 4, 6]
  593. # Same as above, but using a lambda function.
  594. print([1, 2, 3].map(func(element): return element * 2))
  595. See also :ref:`filter<class_Array_method_filter>`, :ref:`reduce<class_Array_method_reduce>`, :ref:`any<class_Array_method_any>` and :ref:`all<class_Array_method_all>`.
  596. .. rst-class:: classref-item-separator
  597. ----
  598. .. _class_Array_method_max:
  599. .. rst-class:: classref-method
  600. :ref:`Variant<class_Variant>` **max**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_max>`
  601. Returns the maximum value contained in the array, if all elements can be compared. Otherwise, returns ``null``. See also :ref:`min<class_Array_method_min>`.
  602. To find the maximum value using a custom comparator, you can use :ref:`reduce<class_Array_method_reduce>`.
  603. .. rst-class:: classref-item-separator
  604. ----
  605. .. _class_Array_method_min:
  606. .. rst-class:: classref-method
  607. :ref:`Variant<class_Variant>` **min**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_min>`
  608. Returns the minimum value contained in the array, if all elements can be compared. Otherwise, returns ``null``. See also :ref:`max<class_Array_method_max>`.
  609. .. rst-class:: classref-item-separator
  610. ----
  611. .. _class_Array_method_pick_random:
  612. .. rst-class:: classref-method
  613. :ref:`Variant<class_Variant>` **pick_random**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_pick_random>`
  614. Returns a random element from the array. Generates an error and returns ``null`` if the array is empty.
  615. .. tabs::
  616. .. code-tab:: gdscript
  617. # May print 1, 2, 3.25, or "Hi".
  618. print([1, 2, 3.25, "Hi"].pick_random())
  619. .. code-tab:: csharp
  620. var array = new Godot.Collections.Array { 1, 2, 3.25f, "Hi" };
  621. GD.Print(array.PickRandom()); // May print 1, 2, 3.25, or "Hi".
  622. \ **Note:** Like many similar functions in the engine (such as :ref:`@GlobalScope.randi<class_@GlobalScope_method_randi>` or :ref:`shuffle<class_Array_method_shuffle>`), this method uses a common, global random seed. To get a predictable outcome from this method, see :ref:`@GlobalScope.seed<class_@GlobalScope_method_seed>`.
  623. .. rst-class:: classref-item-separator
  624. ----
  625. .. _class_Array_method_pop_at:
  626. .. rst-class:: classref-method
  627. :ref:`Variant<class_Variant>` **pop_at**\ (\ position\: :ref:`int<class_int>`\ ) :ref:`๐Ÿ”—<class_Array_method_pop_at>`
  628. Removes and returns the element of the array at index ``position``. If negative, ``position`` is considered relative to the end of the array. Returns ``null`` if the array is empty. If ``position`` is out of bounds, an error message is also generated.
  629. \ **Note:** This method shifts every element's index after ``position`` back, which may have a noticeable performance cost, especially on larger arrays.
  630. .. rst-class:: classref-item-separator
  631. ----
  632. .. _class_Array_method_pop_back:
  633. .. rst-class:: classref-method
  634. :ref:`Variant<class_Variant>` **pop_back**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_pop_back>`
  635. Removes and returns the last element of the array. Returns ``null`` if the array is empty, without generating an error. See also :ref:`pop_front<class_Array_method_pop_front>`.
  636. .. rst-class:: classref-item-separator
  637. ----
  638. .. _class_Array_method_pop_front:
  639. .. rst-class:: classref-method
  640. :ref:`Variant<class_Variant>` **pop_front**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_pop_front>`
  641. Removes and returns the first element of the array. Returns ``null`` if the array is empty, without generating an error. See also :ref:`pop_back<class_Array_method_pop_back>`.
  642. \ **Note:** This method shifts every other element's index back, which may have a noticeable performance cost, especially on larger arrays.
  643. .. rst-class:: classref-item-separator
  644. ----
  645. .. _class_Array_method_push_back:
  646. .. rst-class:: classref-method
  647. |void| **push_back**\ (\ value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_push_back>`
  648. Appends an element at the end of the array. See also :ref:`push_front<class_Array_method_push_front>`.
  649. .. rst-class:: classref-item-separator
  650. ----
  651. .. _class_Array_method_push_front:
  652. .. rst-class:: classref-method
  653. |void| **push_front**\ (\ value\: :ref:`Variant<class_Variant>`\ ) :ref:`๐Ÿ”—<class_Array_method_push_front>`
  654. Adds an element at the beginning of the array. See also :ref:`push_back<class_Array_method_push_back>`.
  655. \ **Note:** This method shifts every other element's index forward, which may have a noticeable performance cost, especially on larger arrays.
  656. .. rst-class:: classref-item-separator
  657. ----
  658. .. _class_Array_method_reduce:
  659. .. rst-class:: classref-method
  660. :ref:`Variant<class_Variant>` **reduce**\ (\ method\: :ref:`Callable<class_Callable>`, accum\: :ref:`Variant<class_Variant>` = null\ ) |const| :ref:`๐Ÿ”—<class_Array_method_reduce>`
  661. Calls the given :ref:`Callable<class_Callable>` for each element in array, accumulates the result in ``accum``, then returns it.
  662. The ``method`` takes two arguments: the current value of ``accum`` and the current array element. If ``accum`` is ``null`` (as by default), the iteration will start from the second element, with the first one used as initial value of ``accum``.
  663. ::
  664. func sum(accum, number):
  665. return accum + number
  666. func _ready():
  667. print([1, 2, 3].reduce(sum, 0)) # Prints 6
  668. print([1, 2, 3].reduce(sum, 10)) # Prints 16
  669. # Same as above, but using a lambda function.
  670. print([1, 2, 3].reduce(func(accum, number): return accum + number, 10))
  671. If :ref:`max<class_Array_method_max>` is not desirable, this method may also be used to implement a custom comparator:
  672. ::
  673. func _ready():
  674. var arr = [Vector2(5, 0), Vector2(3, 4), Vector2(1, 2)]
  675. var longest_vec = arr.reduce(func(max, vec): return vec if is_length_greater(vec, max) else max)
  676. print(longest_vec) # Prints Vector2(3, 4).
  677. func is_length_greater(a, b):
  678. return a.length() > b.length()
  679. See also :ref:`map<class_Array_method_map>`, :ref:`filter<class_Array_method_filter>`, :ref:`any<class_Array_method_any>` and :ref:`all<class_Array_method_all>`.
  680. .. rst-class:: classref-item-separator
  681. ----
  682. .. _class_Array_method_remove_at:
  683. .. rst-class:: classref-method
  684. |void| **remove_at**\ (\ position\: :ref:`int<class_int>`\ ) :ref:`๐Ÿ”—<class_Array_method_remove_at>`
  685. Removes the element from the array at the given index (``position``). If the index is out of bounds, this method fails.
  686. If you need to return the removed element, use :ref:`pop_at<class_Array_method_pop_at>`. To remove an element by value, use :ref:`erase<class_Array_method_erase>` instead.
  687. \ **Note:** This method shifts every element's index after ``position`` back, which may have a noticeable performance cost, especially on larger arrays.
  688. \ **Note:** The ``position`` cannot be negative. To remove an element relative to the end of the array, use ``arr.remove_at(arr.size() - (i + 1))``. To remove the last element from the array, use ``arr.resize(arr.size() - 1)``.
  689. .. rst-class:: classref-item-separator
  690. ----
  691. .. _class_Array_method_resize:
  692. .. rst-class:: classref-method
  693. :ref:`int<class_int>` **resize**\ (\ size\: :ref:`int<class_int>`\ ) :ref:`๐Ÿ”—<class_Array_method_resize>`
  694. Sets the array's number of elements to ``size``. If ``size`` is smaller than the array's current size, the elements at the end are removed. If ``size`` is greater, new default elements (usually ``null``) are added, depending on the array's type.
  695. Returns :ref:`@GlobalScope.OK<class_@GlobalScope_constant_OK>` on success, or one of the other :ref:`Error<enum_@GlobalScope_Error>` constants if this method fails.
  696. \ **Note:** Calling this method once and assigning the new values is faster than calling :ref:`append<class_Array_method_append>` for every new element.
  697. .. rst-class:: classref-item-separator
  698. ----
  699. .. _class_Array_method_reverse:
  700. .. rst-class:: classref-method
  701. |void| **reverse**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_reverse>`
  702. Reverses the order of all elements in the array.
  703. .. rst-class:: classref-item-separator
  704. ----
  705. .. _class_Array_method_rfind:
  706. .. rst-class:: classref-method
  707. :ref:`int<class_int>` **rfind**\ (\ what\: :ref:`Variant<class_Variant>`, from\: :ref:`int<class_int>` = -1\ ) |const| :ref:`๐Ÿ”—<class_Array_method_rfind>`
  708. Returns the index of the **last** occurrence of ``what`` in this array, or ``-1`` if there are none. The search's start can be specified with ``from``, continuing to the beginning of the array. This method is the reverse of :ref:`find<class_Array_method_find>`.
  709. .. rst-class:: classref-item-separator
  710. ----
  711. .. _class_Array_method_shuffle:
  712. .. rst-class:: classref-method
  713. |void| **shuffle**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_shuffle>`
  714. Shuffles all elements of the array in a random order.
  715. \ **Note:** Like many similar functions in the engine (such as :ref:`@GlobalScope.randi<class_@GlobalScope_method_randi>` or :ref:`pick_random<class_Array_method_pick_random>`), this method uses a common, global random seed. To get a predictable outcome from this method, see :ref:`@GlobalScope.seed<class_@GlobalScope_method_seed>`.
  716. .. rst-class:: classref-item-separator
  717. ----
  718. .. _class_Array_method_size:
  719. .. rst-class:: classref-method
  720. :ref:`int<class_int>` **size**\ (\ ) |const| :ref:`๐Ÿ”—<class_Array_method_size>`
  721. Returns the number of elements in the array. Empty arrays (``[]``) always return ``0``. See also :ref:`is_empty<class_Array_method_is_empty>`.
  722. .. rst-class:: classref-item-separator
  723. ----
  724. .. _class_Array_method_slice:
  725. .. rst-class:: classref-method
  726. :ref:`Array<class_Array>` **slice**\ (\ begin\: :ref:`int<class_int>`, end\: :ref:`int<class_int>` = 2147483647, step\: :ref:`int<class_int>` = 1, deep\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`๐Ÿ”—<class_Array_method_slice>`
  727. Returns a new **Array** containing this array's elements, from index ``begin`` (inclusive) to ``end`` (exclusive), every ``step`` elements.
  728. If either ``begin`` or ``end`` are negative, their value is relative to the end of the array.
  729. If ``step`` is negative, this method iterates through the array in reverse, returning a slice ordered backwards. For this to work, ``begin`` must be greater than ``end``.
  730. If ``deep`` is ``true``, all nested **Array** and :ref:`Dictionary<class_Dictionary>` elements in the slice are duplicated from the original, recursively. See also :ref:`duplicate<class_Array_method_duplicate>`).
  731. ::
  732. var letters = ["A", "B", "C", "D", "E", "F"]
  733. print(letters.slice(0, 2)) # Prints ["A", "B"]
  734. print(letters.slice(2, -2)) # Prints ["C", "D"]
  735. print(letters.slice(-2, 6)) # Prints ["E", "F"]
  736. print(letters.slice(0, 6, 2)) # Prints ["A", "C", "E"]
  737. print(letters.slice(4, 1, -1)) # Prints ["E", "D", "C"]
  738. .. rst-class:: classref-item-separator
  739. ----
  740. .. _class_Array_method_sort:
  741. .. rst-class:: classref-method
  742. |void| **sort**\ (\ ) :ref:`๐Ÿ”—<class_Array_method_sort>`
  743. Sorts the array in ascending order. The final order is dependent on the "less than" (``<``) comparison between elements.
  744. .. tabs::
  745. .. code-tab:: gdscript
  746. var numbers = [10, 5, 2.5, 8]
  747. numbers.sort()
  748. print(numbers) # Prints [2.5, 5, 8, 10]
  749. .. code-tab:: csharp
  750. var numbers = new Godot.Collections.Array { 10, 5, 2.5, 8 };
  751. numbers.Sort();
  752. GD.Print(numbers); // Prints [2.5, 5, 8, 10]
  753. \ **Note:** The sorting algorithm used is not `stable <https://en.wikipedia.org/wiki/Sorting_algorithm#Stability>`__. This means that equivalent elements (such as ``2`` and ``2.0``) may have their order changed when calling :ref:`sort<class_Array_method_sort>`.
  754. .. rst-class:: classref-item-separator
  755. ----
  756. .. _class_Array_method_sort_custom:
  757. .. rst-class:: classref-method
  758. |void| **sort_custom**\ (\ func\: :ref:`Callable<class_Callable>`\ ) :ref:`๐Ÿ”—<class_Array_method_sort_custom>`
  759. Sorts the array using a custom :ref:`Callable<class_Callable>`.
  760. \ ``func`` is called as many times as necessary, receiving two array elements as arguments. The function should return ``true`` if the first element should be moved *before* the second one, otherwise it should return ``false``.
  761. ::
  762. func sort_ascending(a, b):
  763. if a[1] < b[1]:
  764. return true
  765. return false
  766. func _ready():
  767. var my_items = [["Tomato", 5], ["Apple", 9], ["Rice", 4]]
  768. my_items.sort_custom(sort_ascending)
  769. print(my_items) # Prints [["Rice", 4], ["Tomato", 5], ["Apple", 9]]
  770. # Sort descending, using a lambda function.
  771. my_items.sort_custom(func(a, b): return a[1] > b[1])
  772. print(my_items) # Prints [["Apple", 9], ["Tomato", 5], ["Rice", 4]]
  773. It may also be necessary to use this method to sort strings by natural order, with :ref:`String.naturalnocasecmp_to<class_String_method_naturalnocasecmp_to>`, as in the following example:
  774. ::
  775. var files = ["newfile1", "newfile2", "newfile10", "newfile11"]
  776. files.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)
  777. print(files) # Prints ["newfile1", "newfile2", "newfile10", "newfile11"]
  778. \ **Note:** In C#, this method is not supported.
  779. \ **Note:** The sorting algorithm used is not `stable <https://en.wikipedia.org/wiki/Sorting_algorithm#Stability>`__. This means that values considered equal may have their order changed when calling this method.
  780. \ **Note:** You should not randomize the return value of ``func``, as the heapsort algorithm expects a consistent result. Randomizing the return value will result in unexpected behavior.
  781. .. rst-class:: classref-section-separator
  782. ----
  783. .. rst-class:: classref-descriptions-group
  784. Operator Descriptions
  785. ---------------------
  786. .. _class_Array_operator_neq_Array:
  787. .. rst-class:: classref-operator
  788. :ref:`bool<class_bool>` **operator !=**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_neq_Array>`
  789. Returns ``true`` if the array's size or its elements are different than ``right``'s.
  790. .. rst-class:: classref-item-separator
  791. ----
  792. .. _class_Array_operator_sum_Array:
  793. .. rst-class:: classref-operator
  794. :ref:`Array<class_Array>` **operator +**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_sum_Array>`
  795. Appends the ``right`` array to the left operand, creating a new **Array**. This is also known as an array concatenation.
  796. .. tabs::
  797. .. code-tab:: gdscript
  798. var array1 = ["One", 2]
  799. var array2 = [3, "Four"]
  800. print(array1 + array2) # Prints ["One", 2, 3, "Four"]
  801. .. code-tab:: csharp
  802. // Note that concatenation is not possible with C#'s native Array type.
  803. var array1 = new Godot.Collections.Array{"One", 2};
  804. var array2 = new Godot.Collections.Array{3, "Four"};
  805. GD.Print(array1 + array2); // Prints ["One", 2, 3, "Four"]
  806. \ **Note:** For existing arrays, :ref:`append_array<class_Array_method_append_array>` is much more efficient than concatenation and assignment with the ``+=`` operator.
  807. .. rst-class:: classref-item-separator
  808. ----
  809. .. _class_Array_operator_lt_Array:
  810. .. rst-class:: classref-operator
  811. :ref:`bool<class_bool>` **operator <**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_lt_Array>`
  812. Compares the elements of both arrays in order, starting from index ``0`` and ending on the last index in common between both arrays. For each pair of elements, returns ``true`` if this array's element is less than ``right``'s, ``false`` if this element is greater. Otherwise, continues to the next pair.
  813. If all searched elements are equal, returns ``true`` if this array's size is less than ``right``'s, otherwise returns ``false``.
  814. .. rst-class:: classref-item-separator
  815. ----
  816. .. _class_Array_operator_lte_Array:
  817. .. rst-class:: classref-operator
  818. :ref:`bool<class_bool>` **operator <=**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_lte_Array>`
  819. Compares the elements of both arrays in order, starting from index ``0`` and ending on the last index in common between both arrays. For each pair of elements, returns ``true`` if this array's element is less than ``right``'s, ``false`` if this element is greater. Otherwise, continues to the next pair.
  820. If all searched elements are equal, returns ``true`` if this array's size is less or equal to ``right``'s, otherwise returns ``false``.
  821. .. rst-class:: classref-item-separator
  822. ----
  823. .. _class_Array_operator_eq_Array:
  824. .. rst-class:: classref-operator
  825. :ref:`bool<class_bool>` **operator ==**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_eq_Array>`
  826. Compares the left operand **Array** against the ``right`` **Array**. Returns ``true`` if the sizes and contents of the arrays are equal, ``false`` otherwise.
  827. .. rst-class:: classref-item-separator
  828. ----
  829. .. _class_Array_operator_gt_Array:
  830. .. rst-class:: classref-operator
  831. :ref:`bool<class_bool>` **operator >**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_gt_Array>`
  832. Compares the elements of both arrays in order, starting from index ``0`` and ending on the last index in common between both arrays. For each pair of elements, returns ``true`` if this array's element is greater than ``right``'s, ``false`` if this element is less. Otherwise, continues to the next pair.
  833. If all searched elements are equal, returns ``true`` if this array's size is greater than ``right``'s, otherwise returns ``false``.
  834. .. rst-class:: classref-item-separator
  835. ----
  836. .. _class_Array_operator_gte_Array:
  837. .. rst-class:: classref-operator
  838. :ref:`bool<class_bool>` **operator >=**\ (\ right\: :ref:`Array<class_Array>`\ ) :ref:`๐Ÿ”—<class_Array_operator_gte_Array>`
  839. Compares the elements of both arrays in order, starting from index ``0`` and ending on the last index in common between both arrays. For each pair of elements, returns ``true`` if this array's element is greater than ``right``'s, ``false`` if this element is less. Otherwise, continues to the next pair.
  840. If all searched elements are equal, returns ``true`` if this array's size is greater or equal to ``right``'s, otherwise returns ``false``.
  841. .. rst-class:: classref-item-separator
  842. ----
  843. .. _class_Array_operator_idx_int:
  844. .. rst-class:: classref-operator
  845. :ref:`Variant<class_Variant>` **operator []**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`๐Ÿ”—<class_Array_operator_idx_int>`
  846. Returns the :ref:`Variant<class_Variant>` element at the specified ``index``. Arrays start at index 0. If ``index`` is greater or equal to ``0``, the element is fetched starting from the beginning of the array. If ``index`` is a negative value, the element is fetched starting from the end. Accessing an array out-of-bounds will cause a run-time error, pausing the project execution if run from the editor.
  847. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  848. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  849. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  850. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  851. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  852. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  853. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  854. .. |void| replace:: :abbr:`void (No return value.)`