gpt4 book ai didi

sml - 在 SML 中将字符串转换为 int

转载 作者:行者123 更新时间:2023-12-04 19:54:00 24 4
gpt4 key购买 nike

在尝试为 SML 中的简单语言创建解释器时,我正在努力将字符串转换为整数。例如,

val someString = " 1.9"
Int.fromString someString

返回:
val it SOME 1 : int option

此外,当我尝试使用以下方法从选项类型中提取值时:
valOf(Int.fromString someString);

它返回:
val it = 1 : int
我很困惑为什么它仍然将字符串转换为这个整数,即使它是一个实数。以及如何将字符串转换为 int 并处理错误(如果有)。

最佳答案

我不知道每个实现中的转换是如何工作的,但在 Poly/ML 中,有效的 int 将是 returned如果到目前为止已经读取了有效的 int - 即使整个字符串不是有效的 int。

正如 molbdnilo 指出的那样,使用 Char.isDigit 函数(或您自己的允许更多 int 情况)来检查字符串是否为 int 会更容易:

List.all Char.isDigit (String.explode someString)

关于您与 valOf 的混淆,这是完全可以预料的,因为您已经看到 Int.fromString 返回了一个 int 选项。 valOf函数定义如下:
fun valOf (opt: 'a option) : 'a =
case opt of
NONE => raise Fail "option is NONE"
| SOME a => a

所以既然你看到了 Int.fromString " 1.9"返回 SOME 1 ,它 必须就是这样 valOf (Int.fromString " 1.9")返回 1 .

关于sml - 在 SML 中将字符串转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35836530/

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