nim中的命令行参数

在使用该命令

nim c -r test.nim arg1 arg2

编译运行nim程序时,可以在文件名的后面加上命令行参数,我们来看看在程序中该怎样使用该命令行参数。

在nim的os模块中提供了这样几个方法用于操作命令行参数:https://github.com/nim-lang/Nim/blob/devel/lib/pure/os.nim


1. proc paramCount(): int {.tags: [ReadIOEffect], raises: [].}

返回应用程序中给出的命令行参数的个数。


如果不带命令行参数执行二进制文件paramCount()将返回0.然后,你可以使用paramStr()查询每个参数,或者使用commandLineParams()一次取回全部的参数。


有效性:在Posix中,没有一种可移植的方法从DLL得到命令行参数,因此paramCount()过程没有在Posix环境中定义。你可以使用declared()测试它的可用性(有效性)。


例如:

when declared(paramCount):
  # Use paramCount() here
else:
  # Do something else!

2. proc paramStr(i: int): TaintedString {.tags: [ReadIOEffect], raises: [].}

返回赋给应用程序的第i个命令行参数。


i应该在1..paramCount()范围内,对于无效的值将会引发EInvalidIndex异常。相反使用这个过程迭代所有的paramCount(),你可以调用方便的commandLineParams()。


调用paramStr(0)是可能的,但这将返回OS特定的内容(通常是调用的可执行文件的名字)。你应该避免使用paraStr(0),而是调用getAppFilename()。


有效性:在Posix中,没有一种可移植的方法从DLL得到命令行参数,因此paramCount()过程没有在Posix环境中定义。你可以使用declared()测试它的可用性(有效性)。


例如:

when declared(paramStr):
  # Use paramStr() here
else:
  # Do something else!

3.proc commandLineParams(): seq[TaintedString] {.raises: [], tags: [ReadIOEffect].}

方便的过程返回命令行参数。


这仅返回参数。如果你想得到应用程序的可执行文件名,调用getAppFilename()。


有效性:在Posix中,没有一种可移植的方法从DLL得到命令行参数,因此paramCount()过程没有在Posix环境中定义。你可以使用declared()测试它的可用性(有效性)。


例如:

when declared(commandLineParams):
  # Use commandLineParams() here
else:
  # Do something else!

4.测试代码

#保存文件为nimTest.nim

import os

when declared(commandLineParams):
  var a,b=commandLineParams()
  echo a, "   ",b

  for i in commandLineParams():
    echo i
else:
  discard



when declared(paramCount):
  echo "命令行参数个数:",paramCount()
else:
  discard

when declared(paramStr):
  for i in 1..paramCount():
    echo paramStr(i)

  echo "单个输出:"
  echo paramStr(1)
  echo paramStr(2)
  echo paramStr(0)
else:
  discard
编译运行文件:nim c -r nimTest.nim 3 4


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值