How can I determine the name of an enum value?

How can I get the name of an enum value?

@enum Animal dog cat
Int(cat)    # works
String(cat) # not working

How can I get the string representation of a variable of type Animal?
I want to get the string “cat” or “dog”.

You need to use Symbol to get the name. That can then be converted to a string though

julia> @enum Animal dog cat

julia> Symbol(cat)

julia> String(Symbol(cat))

Thanks a lot!

Any idea why the direct conversion is not implemented?

The function string(x) appeared in Julia long before the type String.
The type String appeared in advance of the deep move from types with constructors to types as constructors. And string was present to be the “constructor method” that delivers T<:AbstractString.

strx = string(x) does “construct” strx from x, and
expect isa(strx, AbstractString).

using Test

a, stra = 1, "1"

@test string(a) == stra
@test_throws MethodError String(a)