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/