如何从F#中的数组中获取最小值?

时间:2011-04-23 09:24:57

标签: f#

这是我编写的F#代码,可以找到数组的最小值:

let temp = 0
let getArrayMinValue (a : Array) = 
    if a.Length > 0 then (
                            for i = 0 to a.Length do
                               let temp =  ( if temp > a.[i] then a.[i] else temp )  in ()                       
                        )

我有两个问题: 首先, a。[i] 编译错误:未定义字段,构造函数或成员'Item'。

其次,需要 in(),否则,会出现编译错误“Block after this let is donefinished。Expect a expression”。我不太明白这一部分。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

你不能用Array.min来找到最小元素,如下所示:

let numbers =[|1..10|]

printfn "%A"  (numbers |> Array.min)

来参加你的节目,你必须使用类似的东西:

let getArrayMinValue (a : int[]) = 

而不是a: Array你甚至可以做a: 'T[]但是因为你比较了元素对temp的价值,它可能会将它限制为int。

转到另一个错误,使temp变为let mutable temp = 0并使用<-运算符赋值。这是您的整个代码:

let mutable temp = 0


let getArrayMinValue (a : 'T[]) = 
   if a.Length > 0 then (
                        for i = 0 to a.Length do
                           temp <-  ( if temp > a.[i] then a.[i] else temp )
                        )