x) ? 此外,为什么 Scanf 将函-6ren">
gpt4 book ai didi

OCaml - read_int 和 Scanf 之间的区别

转载 作者:行者123 更新时间:2023-12-01 07:06:22 28 4
gpt4 key购买 nike

我想知道有什么区别:

let b = read_int();;


let scan_int () = Scanf.scanf " %d" (fun x -> x)

?

此外,为什么 Scanf 将函数作为条目?

最佳答案

read_int ()读取整行,将整行更改为整数。整行必须只包含一个整数。
Scanf.scanf " %d" (fun x -> x)还读取一整行,去掉行首的空格,然后读取一个用十进制表示法写的整数。如果该整数后面有字符,则它们会留在缓冲区中。

这是一个表格:

| line in stdin | read_int | scanf " %d"     |
|---------------|----------|-----------------|
| "1234" | 1234 | 1234 |
| " 1234" | ERROR | 1234 |
| "1234 foo" | ERROR | 1234 (foo left) |
| "0xff" | 255 | 0 (xff left) |

缓冲区中剩余的内容通常会阻碍您的下一次扫描。我建议您不要在未知输入上使用 scanf。

关于需要的身份函数,那是因为 scanf 可以有非常复杂的格式字符串,这将创建复杂的数据。无法猜测您希望如何返回数据。可以使用元组,但 OCaml 在特定情况下不支持任意扁平化的产品。提供我们所谓的延续可以很好地有效地完成工作。

关于OCaml - read_int 和 Scanf 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49538588/

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