@printf, @sprintfのフォーマットに変数を使用 †Printf.@printfとPrintf.@sprintfは, @printf([io::IOStream], "%Fmt", args...) @sprintf("%Fmt", args...) の型をとるが,この"%Fmt"に変数(String)を入れるとエラーになる. julia> using Printf: @printf, @sprintf julia> @printf("%0.1f", 100) 100.0 julia> fmt = "%0.1f"; julia> @printf(fmt, 100) ERROR: LoadError: ArgumentError: @printf: first or second argument must be a format string Stacktrace: [1] @printf(::LineNumberNode, ::Module, ::Symbol, ::Vararg{Any,N} where N) at /usr/local/julia/usr/share/julia/stdlib/v1.0/Printf/src/Printf.jl:39 in expression starting at none:1 ただし,@evalを噛ませると使える. julia> @eval @printf($fmt,100) 100.0 これをfunctionにしたら便利. print_formatted(fmt, args...) = @eval @printf($fmt, $(args...)) 参考 † |