如何使用 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,还是它是正常的并且应该在本地处理?)。
我正在学习 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,还是它是正常的并且应该在本地处理?)。