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 提供了对整数的逻辑运算 landlor,这提供了一些理由。您可以将 bool 值想象为 1 位整数。我认为逆运算(int -> bool)的任何特定选择都更难激发。

以上是关于OCaml:将 bool 转换为 int的主要内容,如果未能解决你的问题,请参考以下文章

为啥用!!将 int 转换为 bool 时?

不能将 int 转换为 bool

Swift 3 转换获取 'Int1' 不能转换为 'Bool'

使用 Json.Net 将 int 转换为 bool [重复]

如何将 bool 转换为 int? [复制]

将 valarray<bool> 转换为 valarray<int>