-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Add notes to Dictionary
, HashMap
and Array
.
#10914
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Add a link to Godot's container types to relevant FAQ entry.
@@ -99,7 +102,7 @@ scripting API. | |||
| | | This means it's generally slower but can be copied around almost for free. | | |||
| | | The performance benefits of ``VSet`` aren't established, so prefer using other types. | | |||
+------------------------+--------------------------+---------------------------------------------------------------------------------------+ | |||
| ``HashMap`` | ``std::unordered_map`` | **Use this as the "default" map type.** Does not preserve insertion order. | | |||
| ``HashMap`` | ``std::unordered_map`` | **Use this as the "default" map type.** Preserves insertion order. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is std::unordered_map
still the closest analogue? Or does std
have a map type that preserves insertion order?
On a related note. I have very vague memories that the fact that HashMap preserves insertion order was an implementation detail and we didn't want that fact to be part of the contract with users.
I'll do a quick search on RC and see if I can find some discussion about it to refresh my memory
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't find anything conclusive, but it seems that we use HashMap in a lot of places that rely on preserving insertion order.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's also documented behavior:
Dictionaries will preserve the insertion order when adding new entries.
I think the window to change this has closed 😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only for exposed APIs, but yeah. I think considering that both JS and Python do also preserve insertion order on their dicts (with some caveats) and the low barrier we aim for with GDScript, this seems fine.
FixedVector
type to the types table. #10912 to be cherry-pickableI noticed these after #10873 was merged:
HashMap
andDictionary
do preserve insertion order.Dictionary
andArray
useHashMap
andVector
internally, respectively.