mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Document typed dictionaries and arrays in the class reference
This commit is contained in:
parent
4261cc07a5
commit
b6dcb111d2
2 changed files with 43 additions and 2 deletions
|
@ -4,7 +4,7 @@
|
||||||
A built-in data structure that holds a sequence of elements.
|
A built-in data structure that holds a sequence of elements.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
An array data structure that can contain a sequence of elements of any [Variant] type. Elements are accessed by a numerical index starting at [code]0[/code]. Negative indices are used to count from the back ([code]-1[/code] is the last element, [code]-2[/code] is the second to last, etc.).
|
An array data structure that can contain a sequence of elements of any [Variant] type by default. Values can optionally be constrained to a specific type by creating a [i]typed array[/i]. Elements are accessed by a numerical index starting at [code]0[/code]. Negative indices are used to count from the back ([code]-1[/code] is the last element, [code]-2[/code] is the second to last, etc.).
|
||||||
[codeblocks]
|
[codeblocks]
|
||||||
[gdscript]
|
[gdscript]
|
||||||
var array = ["First", 2, 3, "Last"]
|
var array = ["First", 2, 3, "Last"]
|
||||||
|
@ -15,6 +15,10 @@
|
||||||
array[1] = "Second"
|
array[1] = "Second"
|
||||||
print(array[1]) # Prints "Second"
|
print(array[1]) # Prints "Second"
|
||||||
print(array[-3]) # Prints "Second"
|
print(array[-3]) # Prints "Second"
|
||||||
|
|
||||||
|
# This typed array can only contain integers.
|
||||||
|
# Attempting to add any other type will result in an error.
|
||||||
|
var typed_array: Array[int] = [1, 2, 3]
|
||||||
[/gdscript]
|
[/gdscript]
|
||||||
[csharp]
|
[csharp]
|
||||||
Godot.Collections.Array array = ["First", 2, 3, "Last"];
|
Godot.Collections.Array array = ["First", 2, 3, "Last"];
|
||||||
|
@ -25,6 +29,10 @@
|
||||||
array[1] = "Second";
|
array[1] = "Second";
|
||||||
GD.Print(array[1]); // Prints "Second"
|
GD.Print(array[1]); // Prints "Second"
|
||||||
GD.Print(array[^3]); // Prints "Second"
|
GD.Print(array[^3]); // Prints "Second"
|
||||||
|
|
||||||
|
// This typed array can only contain integers.
|
||||||
|
// Attempting to add any other type will result in an error.
|
||||||
|
Godot.Collections.Array>int< typedArray = [1, 2, 3];
|
||||||
[/csharp]
|
[/csharp]
|
||||||
[/codeblocks]
|
[/codeblocks]
|
||||||
[b]Note:[/b] Arrays are always passed by [b]reference[/b]. To get a copy of an array that can be modified independently of the original array, use [method duplicate].
|
[b]Note:[/b] Arrays are always passed by [b]reference[/b]. To get a copy of an array that can be modified independently of the original array, use [method duplicate].
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
pointsDict["Blue"] = 150; // Add "Blue" as a key and assign 150 as its value.
|
pointsDict["Blue"] = 150; // Add "Blue" as a key and assign 150 as its value.
|
||||||
[/csharp]
|
[/csharp]
|
||||||
[/codeblocks]
|
[/codeblocks]
|
||||||
Finally, dictionaries can contain different types of keys and values in the same dictionary:
|
Finally, untyped dictionaries can contain different types of keys and values in the same dictionary:
|
||||||
[codeblocks]
|
[codeblocks]
|
||||||
[gdscript]
|
[gdscript]
|
||||||
# This is a valid dictionary.
|
# This is a valid dictionary.
|
||||||
|
@ -133,6 +133,39 @@
|
||||||
}
|
}
|
||||||
[/csharp]
|
[/csharp]
|
||||||
[/codeblocks]
|
[/codeblocks]
|
||||||
|
To enforce a certain type for keys and values, you can create a [i]typed dictionary[/i]. Typed dictionaries can only contain keys and values of the given types, or that inherit from the given classes:
|
||||||
|
[codeblocks]
|
||||||
|
[gdscript]
|
||||||
|
# Creates a typed dictionary with String keys and int values.
|
||||||
|
# Attempting to use any other type for keys or values will result in an error.
|
||||||
|
var typed_dict: Dictionary[String, int] = {
|
||||||
|
"some_key": 1,
|
||||||
|
"some_other_key": 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Creates a typed dictionary with String keys and values of any type.
|
||||||
|
# Attempting to use any other type for keys will result in an error.
|
||||||
|
var typed_dict_key_only: Dictionary[String, Variant] = {
|
||||||
|
"some_key": 12.34,
|
||||||
|
"some_other_key": "string",
|
||||||
|
}
|
||||||
|
[/gdscript]
|
||||||
|
[csharp]
|
||||||
|
// Creates a typed dictionary with String keys and int values.
|
||||||
|
// Attempting to use any other type for keys or values will result in an error.
|
||||||
|
var typedDict = new Godot.Collections.Dictionary<String, int> {
|
||||||
|
{"some_key", 1},
|
||||||
|
{"some_other_key", 2},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Creates a typed dictionary with String keys and values of any type.
|
||||||
|
// Attempting to use any other type for keys will result in an error.
|
||||||
|
var typedDictKeyOnly = new Godot.Collections.Dictionary<String, Variant> {
|
||||||
|
{"some_key", 12.34},
|
||||||
|
{"some_other_key", "string"},
|
||||||
|
};
|
||||||
|
[/csharp]
|
||||||
|
[/codeblocks]
|
||||||
[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a dictionary which can be modified independently of the original dictionary, use [method duplicate].
|
[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a dictionary which can be modified independently of the original dictionary, use [method duplicate].
|
||||||
[b]Note:[/b] Erasing elements while iterating over dictionaries is [b]not[/b] supported and will result in unpredictable behavior.
|
[b]Note:[/b] Erasing elements while iterating over dictionaries is [b]not[/b] supported and will result in unpredictable behavior.
|
||||||
</description>
|
</description>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue