2017-02-27 28 views
2

我试图做一些很基本的字符串格式化和我立刻卡住格式化。基本字符串NIM

这段代码有什么问题?

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',但我不明白,我应如何解决它。

回答

4

的这里的问题是,稔的格式化操作%预计的对象具有相同类型的数组。由于阵列的第一个元素在这里具有CmdLineKind枚举类型,编译器期望的元件的其余部分具有相同的类型。很显然,你真正想要的是所有的元素有string型,您可以通过第一放慢参数明确地转换为字符串(与$运营商)执行本。

import strutils 
import parseopt2 

for kind, key, val in getopt(): 
    echo "$1 $2 $3" % [$kind, key, val] 

在情况下,你也想知道这是什么TaintedString类型出现在错误信息,这是一种特殊类型的指示非验证的外部输入到程序。由于未验证的输入数据会带来安全风险,语言支持一种特殊"taint mode",它可以帮助您跟踪其中的输入可能需要验证。

http://docstore.mik.ua/orelly/linux/cgi/ch08_04.htm

:这种模式是通过提供一套类似的特点,在Perl编程语言的启发