f# - F# 中的字符值

标签 f#

假设我有一个字符串“COLIN”。

这个字符串的数值是:

3 + 15 + 12 + 9 + 14 = 53.

所以

A = 1, B = 2, C = 3, and so on.

为此,我什至不知道如何从 F# 开始。

let mutable nametotal = 0
let rec tcalculate name =
    name.ToString().ToCharArray()
    |> Seq.length

这是我目前所拥有的。 seq.length 只是用来测试 toCharArray 是否真的有效。

最佳答案

你所拥有的是体面的;这是另一个版本:

#light

let Value (c:char) = 
    (int c) - (int 'A') + 1

let CalcValue name =
    name |> Seq.sum_by Value

printfn "COLIN = %d" (CalcValue "COLIN")
// may be of interest:
printfn "%A" ("COLIN" |> Seq.map Value |> Seq.to_list)

它假设原始输入是大写的。 “int”是一个将 char(或其他)转换为 int 的函数; Seq.sum_by 非常适合这个。

我还展示了一个使用 map 的例子,不知道你对什么感兴趣。

关于f# - F# 中的字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526961/

相关文章:

inheritance - 了解 F# 3.0 中 protected /基本成员使用的更改

f# - 使用延续将二元递归转化为尾递归

f# - F# 列表是否持久?

f# - F# 中的通用模块

f# - Dapper F# - A Parameterless default 一个无参数的默认构造函数或一个匹配的签名

f# - 如何在 F# 中使用类型测试来模式匹配异常?

f# - VS2013每次编译FSharp项目

visual-studio - Visual Studio for Mac 中的 F# Intellisense

string - 为什么从 string 转换为 int 会产生奇怪的值

macos - 在Mac上以32位模式运行交互式F#