gpt4 book ai didi

sml - 读取 SML 中的命令行参数

转载 作者:行者123 更新时间:2023-12-04 16:03:15 26 4
gpt4 key购买 nike

我正在尝试读取我的输入文件的名称 argv[1] 。这是我到目前为止所做的:

val args = CommandLine.arguments() ;
val (x::y) = args ;
val _ = agora x

但我不断收到此错误消息:

uncaught exception Bind [nonexhaustive binding failure] .

有人可以帮忙吗?提前谢谢你!

最佳答案

这是编译器警告您不能确定绑定(bind)模式始终有效。

例如,给定以下程序:

val args = CommandLine.arguments ()
val (x::y) = args
val _ = print (x ^ "\n")

编译运行得到:

$ mosmlc args.sml
$ ./a.out Hello
Hello
$ ./a.out
Uncaught exception:
Bind

要安全地处理可变数量的命令行参数,您可以使用case-of:

fun main () =
case CommandLine.arguments () of
[] => print ("Too few arguments!\n")
| [arg1] => print ("That's right! " ^ arg1 ^ "\n")
| args => print ("Too many arguments!\n")

val _ = main ()

编译运行得到:

$ mosmlc args2.sml
$ ./a.out
Too few arguments!
$ ./a.out hello
That's right! hello
$ ./a.out hello world
Too many arguments!

旁注:C 的 argv[0] 等效于 CommandLine.name ()

关于sml - 读取 SML 中的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com