gpt4 book ai didi

f# - 从 bool 到 int 的转换(true -> 1 和 false -> 0)

转载 作者:行者123 更新时间:2023-12-02 12:00:48 25 4
gpt4 key购买 nike

F# 中是否有任何内置方法可以将 true 转换为 1 以及 false 转换为 0 ?这对于 C、C++ 等语言来说很简单。

作为一点背景知识,我正在尝试解决教科书中的一个练习(Functional Programming Using F# 中的练习 2.4),该练习要求返回一个返回的 F# 函数 occFromIth(str,i,ch)字符串 strj 位置中字符 ch 的出现次数,其中 j >= i

我的解决方案是

let rec occFromIth (str : string, i, ch) =
if i >= str.Length then 0
else if i < 0 || str.[i] <> ch then occFromIth(str, i+1, ch)
else 1 + occFromIth(str, i+1, ch)

但我不喜欢代码重复,所以我写了

let boolToInt = function
| true -> 1
| false -> 0

let rec occFromIth (str : string, i, ch) =
if i >= str.Length then 0
else boolToInt (not (i < 0 || str.[i] <> ch)) + occFromIth(str, i+1, ch)

我猜另一种选择是使用 if...then...else...,采用 C/C++ conditional operator 的风格

let rec occFromIth (str : string, i, ch) =
if i >= str.Length then 0
else (if (not (i < 0 || str.[i] <> ch)) then 1 else 0) + occFromIth(str, i+1, ch)

let rec occFromIth (str : string, i, ch) =
if i >= str.Length then 0
else (if (i < 0 || str.[i] <> ch) then 0 else 1) + occFromIth(str, i+1, ch)

在 F# 中如何做到这一点?

最佳答案

System.Convert.ToInt32(bool) -- 我对 F# 不太熟悉,但我相信使用函数无论是否内置都是一样的:function(arg0, arg1, ...)。因此,在这种情况下,您只需调用 System.Convert.ToInt32(myBool)

关于f# - 从 bool 到 int 的转换(true -> 1 和 false -> 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com