如何使用ReasonML/Bucklescript将字符串解析为整数?

7
我正在学习Reasonml,但是在标准库和Bucklescript Js模块中都找不到相应的函数。除了使用 原始的javascript ,是否有更好的选择呢?
目前我是用下面这个函数实现的:
let parseint: string => int = [%raw {| x => parseInt(x, 10) |}];
1个回答

10

int_of_string(还有 float_of_string / bool_of_string )应该可以满足您的需求。

它在标准库中,您应该能够搜索到它 https://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html (如果您安装了reason-tools浏览器扩展程序,则该站点将更适合您,因为它会自动转换为Reason语法)

请注意,如果字符串无效,则所有这些函数都会抛出异常(阅读链接以了解每个函数的工作原理和对字符串的期望)。

正如@glennsl所指出的那样,当Bucklescript赶上OCaml编译器的更新版本(> 4.02.3)时,您可能需要使用更安全的_opt变体,例如int_of_string_opt,它返回一个 Some(number) None ,具体取决于您对输入的信任程度,您希望避免异常的程度以及您想如何处理错误的输入(它是否是异常情况,应该杀死程序/堆栈,还是它是否是正常情况,应该在本地处理)。


2
请注意,由于BuckleScript仍使用4.02.3编译器,因此_opt变体不可用。 - glennsl
这就是我一直在寻找的。很奇怪,因为BuckleScript有一个从字符串解析浮点数的函数(Js.Float.fromString),但它没有相应的整数解析函数。 - gabrielperales

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接