如何在 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"
以下错误:
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"