summaryrefslogtreecommitdiff
path: root/doc/classes/Array.xml
blob: 08455bb7bc869174de8ac9ba2a5833460842c158 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Array" version="4.0">
	<brief_description>
		Generic array datatype.
	</brief_description>
	<description>
		Generic array which can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 the second to last, etc.).
		[b]Example:[/b]
		[codeblock]
		var array = ["One", 2, 3, "Four"]
		print(array[0]) # One.
		print(array[2]) # 3.
		print(array[-1]) # Four.
		array[2] = "Three"
		print(array[-2]) # Three.
		[/codeblock]
		Arrays are always passed by reference.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolColorArray">
			</argument>
			<description>
				Constructs an array from a [PoolColorArray].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolVector3Array">
			</argument>
			<description>
				Constructs an array from a [PoolVector3Array].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolVector2Array">
			</argument>
			<description>
				Constructs an array from a [PoolVector2Array].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolStringArray">
			</argument>
			<description>
				Constructs an array from a [PoolStringArray].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolRealArray">
			</argument>
			<description>
				Constructs an array from a [PoolRealArray].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolIntArray">
			</argument>
			<description>
				Constructs an array from a [PoolIntArray].
			</description>
		</method>
		<method name="Array">
			<return type="Array">
			</return>
			<argument index="0" name="from" type="PoolByteArray">
			</argument>
			<description>
				Constructs an array from a [PoolByteArray].
			</description>
		</method>
		<method name="append">
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Appends an element at the end of the array (alias of [method push_back]).
			</description>
		</method>
		<method name="back">
			<return type="Variant">
			</return>
			<description>
				Returns the last element of the array, or [code]null[/code] if the array is empty.
			</description>
		</method>
		<method name="bsearch">
			<return type="int">
			</return>
			<argument index="0" name="value" type="Variant">
			</argument>
			<argument index="1" name="before" type="bool" default="True">
			</argument>
			<description>
				Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [code]before[/code] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array.
				[b]Note:[/b] Calling [method bsearch] on an unsorted array results in unexpected behavior.
			</description>
		</method>
		<method name="bsearch_custom">
			<return type="int">
			</return>
			<argument index="0" name="value" type="Variant">
			</argument>
			<argument index="1" name="obj" type="Object">
			</argument>
			<argument index="2" name="func" type="String">
			</argument>
			<argument index="3" name="before" type="bool" default="True">
			</argument>
			<description>
				Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search and a custom comparison method. Optionally, a [code]before[/code] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return [code]true[/code] if the first argument is less than the second, and return [code]false[/code] otherwise.
				[b]Note:[/b] Calling [method bsearch] on an unsorted array results in unexpected behavior.
			</description>
		</method>
		<method name="clear">
			<description>
				Clears the array. This is equivalent to using [method resize] with a size of [code]0[/code].
			</description>
		</method>
		<method name="count">
			<return type="int">
			</return>
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Returns the number of times an element is in the array.
			</description>
		</method>
		<method name="duplicate">
			<return type="Array">
			</return>
			<argument index="0" name="deep" type="bool" default="False">
			</argument>
			<description>
				Returns a copy of the array.
				If [code]deep[/code] is [code]true[/code], a deep copy is performed: all nested arrays and dictionaries are duplicated and will not be shared with the original array. If [code]false[/code], a shallow copy is made and references to the original nested arrays and dictionaries are kept, so that modifying a sub-array or dictionary in the copy will also impact those referenced in the source array.
			</description>
		</method>
		<method name="empty">
			<return type="bool">
			</return>
			<description>
				Returns [code]true[/code] if the array is empty.
			</description>
		</method>
		<method name="erase">
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Removes the first occurrence of a value from the array.
			</description>
		</method>
		<method name="find">
			<return type="int">
			</return>
			<argument index="0" name="what" type="Variant">
			</argument>
			<argument index="1" name="from" type="int" default="0">
			</argument>
			<description>
				Searches the array for a value and returns its index or -1 if not found. Optionally, the initial search index can be passed.
			</description>
		</method>
		<method name="find_last">
			<return type="int">
			</return>
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Searches the array in reverse order for a value and returns its index or -1 if not found.
			</description>
		</method>
		<method name="front">
			<return type="Variant">
			</return>
			<description>
				Returns the first element of the array, or [code]null[/code] if the array is empty.
			</description>
		</method>
		<method name="has">
			<return type="bool">
			</return>
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Returns [code]true[/code] if the array contains the given value.
				[codeblock]
				["inside", 7].has("inside") == true
				["inside", 7].has("outside") == false
				["inside", 7].has(7) == true
				["inside", 7].has("7") == false
				[/codeblock]
			</description>
		</method>
		<method name="hash">
			<return type="int">
			</return>
			<description>
				Returns a hashed integer value representing the array contents.
			</description>
		</method>
		<method name="insert">
			<argument index="0" name="position" type="int">
			</argument>
			<argument index="1" name="value" type="Variant">
			</argument>
			<description>
				Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]pos == size()[/code]).
			</description>
		</method>
		<method name="invert">
			<description>
				Reverses the order of the elements in the array.
			</description>
		</method>
		<method name="max">
			<return type="Variant">
			</return>
			<description>
				Returns the maximum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
			</description>
		</method>
		<method name="min">
			<return type="Variant">
			</return>
			<description>
				Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
			</description>
		</method>
		<method name="pop_back">
			<return type="Variant">
			</return>
			<description>
				Removes and returns the last element of the array. Returns [code]null[/code] if the array is empty.
			</description>
		</method>
		<method name="pop_front">
			<return type="Variant">
			</return>
			<description>
				Removes and returns the first element of the array. Returns [code]null[/code] if the array is empty.
			</description>
		</method>
		<method name="push_back">
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Appends an element at the end of the array.
			</description>
		</method>
		<method name="push_front">
			<argument index="0" name="value" type="Variant">
			</argument>
			<description>
				Adds an element at the beginning of the array.
			</description>
		</method>
		<method name="remove">
			<argument index="0" name="position" type="int">
			</argument>
			<description>
				Removes an element from the array by index.
			</description>
		</method>
		<method name="resize">
			<argument index="0" name="size" type="int">
			</argument>
			<description>
				Resizes the array to contain a different number of elements. If the array size is smaller, elements are cleared, if bigger, new elements are [code]null[/code].
			</description>
		</method>
		<method name="rfind">
			<return type="int">
			</return>
			<argument index="0" name="what" type="Variant">
			</argument>
			<argument index="1" name="from" type="int" default="-1">
			</argument>
			<description>
				Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.
			</description>
		</method>
		<method name="shuffle">
			<description>
				Shuffles the array such that the items will have a random order. This method uses the global random number generator common to methods such as [method @GDScript.randi]. Call [method @GDScript.randomize] to ensure that a new seed will be used each time if you want non-reproducible shuffling.
			</description>
		</method>
		<method name="size">
			<return type="int">
			</return>
			<description>
				Returns the number of elements in the array.
			</description>
		</method>
		<method name="slice">
			<return type="Array">
			</return>
			<argument index="0" name="begin" type="int">
			</argument>
			<argument index="1" name="end" type="int">
			</argument>
			<argument index="2" name="step" type="int" default="1">
			</argument>
			<argument index="3" name="deep" type="bool" default="False">
			</argument>
			<description>
				Duplicates the subset described in the function and returns it in an array, deeply copying the array if [code]deep[/code] is [code]true[/code]. Lower and upper index are inclusive, with the [code]step[/code] describing the change between indices while slicing.
			</description>
		</method>
		<method name="sort">
			<description>
				Sorts the array.
				[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural order). This may lead to unexpected behavior when sorting an array of strings ending with a sequence of numbers. Consider the following example:
				[codeblock]
				var strings = ["string1", "string2", "string10", "string11"]
				strings.sort()
				print(strings) # Prints [string1, string10, string11, string2]
				[/codeblock]
			</description>
		</method>
		<method name="sort_custom">
			<argument index="0" name="obj" type="Object">
			</argument>
			<argument index="1" name="func" type="String">
			</argument>
			<description>
				Sorts the array using a custom method. The arguments are an object that holds the method and the name of such method. The custom method receives two arguments (a pair of elements from the array) and must return either [code]true[/code] or [code]false[/code].
				[b]Note:[/b] you cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior.
				[codeblock]
				class MyCustomSorter:
				    static func sort_ascending(a, b):
				        if a[0] &lt; b[0]:
				            return true
				        return false

				var my_items = [[5, "Potato"], [9, "Rice"], [4, "Tomato"]]
				my_items.sort_custom(MyCustomSorter, "sort_ascending")
				print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].
				[/codeblock]
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>