I’m currently using the following code
example_string = "$(logdata.level)"
to convert from a Base.CoreLogging.LogLevel
to a String
.
However I would guess that there is a function call which can be used instead to do this?
I’m currently using the following code
example_string = "$(logdata.level)"
to convert from a Base.CoreLogging.LogLevel
to a String
.
However I would guess that there is a function call which can be used instead to do this?
Just string
, but you usually define the called print
methods instead of string
methods.
julia> Meta.@lower "$(logdata.level)"
:($(Expr(:thunk, CodeInfo(
@ none within `top-level scope`
1 ─ %1 = logdata
│ %2 = Base.getproperty(%1, :level)
│ %3 = Base.string(%2)
└── return %3
))))
But presumably I can’t do
print(logdata.level)
?
So it has to be String(logdata.level)
? Sorry just slightly confused by your previous comment
Try in an interactive REPL. string
and print
’s docstrings in help mode also explains the print
methods a bit better. It’ll explain your intuition that instantiating a String
does not involve the 1-argument print
to stdout
.
It’s calling string(logdata.level)
, which (by default) calls print
to an IOBuffer
under the hood (and print
in turn calls show
by default).
There is also a String(x)
constructor, but it is much more limited in what types x
it supports — basically, just other strings and vectors of bytes, i.e. things which can be “losslessly” represented as a String
. For example, you can do string(3)
to get "3"
, but not String(3)
.
Do you happen to know where I can find the documentation for string
as opposed to String
? Thanks for the explanation
See the manual:
Excellent!