如何在 Julia 的 `@sprintf` 中使用函数参数?

How to use function argument in `@sprintf` in Julia?

以下错误:

function num_to_string(x,format="%.1f")
    @sprintf format x
end

错误是:

LoadError: MethodError: no method matching Printf.Format(::Symbol)

我尝试使用 @sprintf(format,x) 形式,以及像 @sprintf $format x

这样的插值(?)

如何使用 @sprintf 格式的变量?

@sprintf 是一个宏,在宏扩展过程中将格式字符串转换为经过处理的 Format 对象。这对性能有好处,但意味着 @sprintf 仅限于作为格式的文字字符串,而不是变量。

但是,您可以直接进行 @sprintf ultimately makes 的函数调用,因为那将是一个普通的函数调用(而不是宏调用),您可以使用一个变量作为格式参数:

julia> function num_to_string(x,fmt="%.1f")
           Printf.format(Printf.Format(fmt), x)
       end
num_to_string (generic function with 2 methods)

julia> num_to_string(45)
"45.0"

julia> num_to_string(pi, "%.5f")
"3.14159"