2011-04-23 55 views
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()      
         ) 

我有两个问题: 首先,A [1]已编译错误:场,构造函数或成员'Item'未定义。

其次,在()被requried,否则,在编译错误“块以下这让是未完成。期望的表达”。我不太明白这部分。

在此先感谢您的帮助。

回答

7

不能使用Array.min找到最小元素,类似下面:

let numbers =[|1..10|] 

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

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

let getArrayMinValue (a : int[]) = 

,而不是a: Array你甚至可以做a: 'T[],但由于您将元素的值与temp进行比较,因此可能会将其限制为int。

出现其他错误,使临时变量: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) 
         ) 
相关问题