From enum back in to name

Godot Version

4.2.2 stable


how do I know the name of enum number?

func _ready():
	print(String("{x}").format({x = test[1]}))

enum test{
	test1 = 1,
	test2 = 2

I want output: test1

what ever I try either i get error that function does’t exist or I get number instead of name of enum constant

enum’s are not meant to be used like this. If you want this kind of funtionality you would use dictionaries:

var dict: Dictionary = {
    "test1" = 1,
    "test2" = 2

Enums are lists of constants. their names in code gets replaced by their corresponding values when you compile the code → the names dont exist since they only are supposed to help you read the code better



print(String("{x}").format({x = test.test2}))
1 Like

output is 2

I don’t understand what you mean by output is 2

it prints 2 instead of test2

I got the solution and it explained very good thanks

of course, if you want test1 you call test.test1

but since in the example you specified test[1] is calling the index of the array and it is the second element in the array…

but of course you didn’t have an array, but I still wanted to be precise

It’s important that you solved it

1 Like

Technically you actually can get the name of the enum by the value:

extends Node2D

enum MyEnum {
	VALUE1 = 1,
	VALUE2 = 2,
func _ready():
	# prints 'VALUE1'

EDIT: I’d still be wary of using code that would include magic constants like ‘1’ like this. I’d only advise such a thing if the “1” originated from a place where MyEnum.VALUE1 was returned (an int) and you had another function elsewhere where you wanted the name, ie for debugging output for better readability.


I agree that micalpixel’s solution more of a solution than what is marked as the solution above.

I posted the following, but is wrong:
Tho I would just do


but, to each their own!

Edit, I stand corrected

1 Like

That will only work if the values are in plain order without duplicates or gaps, won’t work with:

enum Foo {
    Bar = 1
    Baz = 3
1 Like

they all seem to work now:

func _ready():
	var tests = test.test100

enum test{
	test278 = 278,
	test1 = 1,
	test3 = 3,
	test2 = 2,
	test100 = 100
1 Like