OCaml:将 bool 转换为 int
Posted
技术标签:
【中文标题】OCaml:将 bool 转换为 int【英文标题】:OCaml: Converting / casting bool to int 【发布时间】:2015-12-01 23:43:10 【问题描述】:如何将 ocaml 布尔值转换为整数? (没有int_of_bool
函数。)
【问题讨论】:
【参考方案1】:2020年,您可以使用Bool.to_int
。
来自 Bool 库文档:
val to_int : bool -> int
如果 b 为假,b 为 0,如果 b 为真,b 为 1。
来源:https://caml.inria.fr/pub/docs/manual-ocaml/libref/Bool.html
【讨论】:
【参考方案2】:这是一种可能的实现方式:
let int_of_bool b = if b then 1 else 0
OCaml Batteries Included 库在其BatBool module 中有一个函数to_int
。
【讨论】:
OCaml 没有将布尔值转换为整数的特定函数有什么原因吗? 在考虑了这一点后,我决定这不是你需要经常做的事情。 OCaml 标准库一直是相当斯巴达式的——在我看来,它太 斯巴达式了。 Core 和 Batteries 等其他库正在用更丰富、更一致的功能集来填补空白,即使它们是微不足道的和/或不常用的。 @hlin117:从概念上讲,布尔值和整数没有理由可以转换。为什么是真1?为什么是假0?为什么不是其他号码?除了这些整数是 C 中比较运算符的结果之外,我想不出任何理由,这与 OCaml 完全无关。 这是一个中肯的评论。但是 OCaml 提供了对整数的逻辑运算land
和 lor
,这提供了一些理由。您可以将 bool 值想象为 1 位整数。我认为逆运算(int -> bool)的任何特定选择都更难激发。以上是关于OCaml:将 bool 转换为 int的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 转换获取 'Int1' 不能转换为 'Bool'