我正在尝试做一些非常基本的字符串格式化,我立即被卡住了。
此代码有什么问题?
import strutils
import parseopt2
for kind, key, val in getopt():
echo "$1 $2 $3" % [kind, key, val]
我得到Error: type mismatch: got (TaintedString) but expected 'CmdLineKind = enum'
但我不明白我该如何解决它。
答案 0 :(得分:5)
这里的问题是Nim的格式化运算符Emulator without host-side GPU emulation detected.
需要一个具有相同类型的对象数组。由于此处数组的第一个元素具有%
枚举类型,因此编译器期望其余元素具有相同的类型。显然,您真正想要的是具有CmdLineKind
类型的所有元素,您可以通过将第一个参数显式转换为字符串(使用string
运算符)来强制执行此操作。
$
如果您还想知道错误消息中出现的此import strutils
import parseopt2
for kind, key, val in getopt():
echo "$1 $2 $3" % [$kind, key, val]
类型是什么,这是一种特殊类型,表示程序的未经验证的外部输入。由于未经验证的输入数据存在安全风险,因此该语言支持特殊"taint mode",可帮助您跟踪输入可能需要验证的位置。此模式的灵感来自Perl编程语言中提供的一组类似功能:
答案 1 :(得分:2)