F#:将一个数字数组作为字符串减少为一个整数

时间:2015-09-06 09:34:43

标签: f#

我有一个字符串数组,称之为a,其中每个字符串代表一个数字。我还有一个函数f : int -> int -> int,我想用它来减少a到一个数字"。我想写一下:

a |> Array.reduce (fun x y -> f (int32 x) (int32 y))

但这不起作用,因为"减少"禁止我从f返回整数(因为a是一个字符串数组

  

是否有功能性方式使这项工作无需返回   来自f的字符串或事先将字符串数组转换为int数组?

1 个答案:

答案 0 :(得分:6)

首先使用"This field must be unique."映射

如果您不想调整Array.reduce来处理字符串,并且您想使用f,那么我猜您应该先转换(并且说实话:它似乎更容易而不是使用你的包装器 - lambda手动) - 所以为什么不使用

Array.reduce

代替?

如果您担心生成中间阵列的开销,您可以随时将a |> Array.map int32 |> Array.reduce f Array.切换到懒惰:

Seq.

使用a |> Seq.map int32 |> Seq.reduce f

除此之外,你可以永远Array.fold到你的心中:

fold

所以你可以称之为功能或不;)