这是我编写的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”。我不太明白这一部分。
提前感谢您的帮助。
答案 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 )
)