如何解决SML:读取一行整数时出现异常
fun parse file =
let
(* A function to read an integer from specified input. *)
fun readInt input =
Option.valOf (TextIO.scanStream (Int.scan StringCvt.DEC) input)
in
(Array.update(acc,readInt inStream,f+1); readInts (i - 1) sumd acc has)
end
in
(a,b,readInts b 0 empty [])
end
(* ................................................................*)
我想从包含 2 行的文本文件中读取内容:
第一个将包含 2 个整数 a,b
第二个将包含 b 个整数 x1,x2,.. xb.
例如,它将采用这种形式:
a b
n1 n2 n3 .. nb
我收到此错误消息:
uncaught exception Option
raised at: Basis/Implementation/option.sml:19.25-19.31
第 19 行:如果有帮助的话,基本上是 readInts i sumd acc has
。
我的代码的问题是因为 readInts 函数。 我想逐个读取整数,而不是一次读取整行(所以我不能使用像 "explode"
这样的函数)
(这不像我被迫那样做,但是读取一次并形成我想要的数组 acc 和 list 具有移动时间,而不是读取和存储 b 整数在缓冲区列表中,然后重新运行列表形成我想要的数据)。
你能看出我的代码有什么问题吗?
解决方法
在 readInt
的第二种情况下,您调用 readInts
两次,将流推进到两个数字而不是一个数字。由于您的输入中有 b
个数字,但执行此操作 b
次,您尝试读取 2 * b
个数字并且最终无法读取。当这种情况发生时,TextIO.scanStream (Int.scan StringCvt.DEC) input
是 NONE
,所以 Option.valOf
加注 Option
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。