这是我编写的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(),否则会出现编译错误"在此之后阻塞未完成.期望表达式".我不太明白这一部分.
在此先感谢您的帮助.
你不能使用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)