2017-02-27 27 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編程語言的啓發