The problem here is that Nim's formatting operator %
expects an array of objects with the same type. Since the first element of the array here has the CmdLineKind
enum type, the compiler expects the rest of the elements to have the same type. Obviously, what you really want is all of the elements to have the string
type and you can enforce this by explicitly converting the first paramter to string (with the $
operator).
import strutils
import parseopt2
for kind, key, val in getopt():
echo "$1 $2 $3" % [$kind, key, val]
In case, you are also wondering what is this TaintedString
type appearing in the error message, this is a special type indicating a non-validated external input to the program. Since non-validated input data poses a security risk, the language supports a special "taint mode", which helps you keep track of where the inputs may need validation. This mode is inspired by a similar set of features available in the Perl programming language:
http://docstore.mik.ua/orelly/linux/cgi/ch08_04.htm