nim 中的多类型格式化(相当于增强格式)
multi type formatting in nim (boost format equivalent)
作为 C++ boost 的广泛过去用户,我想了解 nim 等价物 %
与 boost::format(fmtstr) % args
相比是否功能不足。
我这么说是因为 boost::format 使用模板并且每个参数都是词法转换为字符串。但是在 nim 中,%
proc 使用一个字符串数组作为参数,所以这不会构建:
echo "" % float(4.5)
输出:
Error: type mismatch: got (string, float) but expected one of: proc
%
(formatstr, a: string): string proc %
(formatstr: string; a:
openArray[string]): string
您可以使用 format
而不是 %
,它支持所有类型并自动将它们转换为字符串:https://nim-lang.org/docs/strutils.html#format,string,varargs[string,]
在 Nim 的下一个版本中,将有一个 strformat
具有更高级格式的库:https://github.com/nim-lang/Nim/blob/devel/lib/pure/strformat.nim
还有一个较旧的 strfmt
库:https://lyro.bitbucket.io/strfmt/
作为 C++ boost 的广泛过去用户,我想了解 nim 等价物 %
与 boost::format(fmtstr) % args
相比是否功能不足。
我这么说是因为 boost::format 使用模板并且每个参数都是词法转换为字符串。但是在 nim 中,%
proc 使用一个字符串数组作为参数,所以这不会构建:
echo "" % float(4.5)
输出:
Error: type mismatch: got (string, float) but expected one of: proc
%
(formatstr, a: string): string proc%
(formatstr: string; a: openArray[string]): string
您可以使用 format
而不是 %
,它支持所有类型并自动将它们转换为字符串:https://nim-lang.org/docs/strutils.html#format,string,varargs[string,]
在 Nim 的下一个版本中,将有一个 strformat
具有更高级格式的库:https://github.com/nim-lang/Nim/blob/devel/lib/pure/strformat.nim
还有一个较旧的 strfmt
库:https://lyro.bitbucket.io/strfmt/