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

Mic*_*l Z 2 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 ()                       
                        )
Run Code Online (Sandbox Code Playgroud)

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

其次,需要输入in(),否则会出现编译错误"在此之后阻塞未完成.期望表达式".我不太明白这一部分.

在此先感谢您的帮助.

man*_*lds 7

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

let numbers =[|1..10|]

printfn "%A"  (numbers |> Array.min)
Run Code Online (Sandbox Code Playgroud)

来你的程序,你必须使用类似的东西:

let getArrayMinValue (a : int[]) = 
Run Code Online (Sandbox Code Playgroud)

而不是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 )
                        )
Run Code Online (Sandbox Code Playgroud)