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

How can I parse a string to an integer with Reasonml/Bucklescript?

我正在学习 Reasonml,我在标准库中找不到任何函数可以这样做,Bucklescript Js 模块也没有。有没有比使用 raw javascript 更好的选择?

现在我正在用这个功能实现它:

let parseint: string => int = [%raw {| x => parseInt(x, 10) |}];

int_of_string(还有 float_of_string / bool_of_string)应该做你需要的。

它在标准库中,您应该能够搜索到它 https://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html (that site will work better for you if you have the reason-tools 安装了浏览器扩展,以便它自动从 OCaml 转换为 Reason 语法)

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

正如@glennsl 指出的那样,当 Bucklescript 赶上比 4.02.3 更新的 OCaml 编译器版本时,您可能希望使用更安全的 _opt 变体,例如int_of_string_opt 那 returns 一个 Some(number)None 代替,取决于你对输入的信任程度,你想避免异常的程度,以及你想如何处理坏的输入(它是异常的并且应该杀死 program/stack,还是它是正常的并且应该在本地处理?)。