gpt4 book ai didi

functional-programming - SML:读取一行整数时出现异常

转载 作者:行者123 更新时间:2023-12-04 13:08:17 31 4
gpt4 key购买 nike

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 个整数 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) inputNONE,因此 Option.valOf 引发 Option.

关于functional-programming - SML:读取一行整数时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68352497/

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