SML:读取一行整数时出现异常
SML: Exception while reading a line of integers
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 has 可以节省时间,而不是读取 b 整数并将其存储在缓冲区列表中,然后重新 运行 形成我想要的数据的列表)。
你能看出我的代码有什么问题吗?
在 readInts
的第二种情况下,您调用了 readInt
两次,使流前进到两个数字而不是一个。由于您的输入中有 b
个数字,但这样做 b
次,您尝试读取 2 * b
个数字,但最终无法读取。当这种情况发生时 TextIO.scanStream (Int.scan StringCvt.DEC) input
是 NONE
,所以 Option.valOf
引发 Option
.
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 has 可以节省时间,而不是读取 b 整数并将其存储在缓冲区列表中,然后重新 运行 形成我想要的数据的列表)。
你能看出我的代码有什么问题吗?
在 readInts
的第二种情况下,您调用了 readInt
两次,使流前进到两个数字而不是一个。由于您的输入中有 b
个数字,但这样做 b
次,您尝试读取 2 * b
个数字,但最终无法读取。当这种情况发生时 TextIO.scanStream (Int.scan StringCvt.DEC) input
是 NONE
,所以 Option.valOf
引发 Option
.