我有一个整数数组,想要做以下操作:
s += array(index+1) - array(index)
所以,我尝试了下面的内容:
let mutable s =0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
但我发错了:
预计此表达式具有类型 '双'但这里有类型 '单元'
更新
完整代码
let series = [|30;21;29;31;40;48;53;47;37;39;31;29;17;9;20;24;27;35;41;38;
27;31;27;26;21;13;21;18;33;35;40;36;22;24;21;20;17;14;17;19;
26;29;40;31;20;24;18;26;17;9;17;21;28;32;46;33;23;28;22;27;
18;8;17;21;31;34;44;38;31;30;26;32|]
let initialTrend series slen : double=
let mutable s = 0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
答案 0 :(得分:6)
嗯,你告诉该函数会返回一个double,错误信息告诉你它没有返回任何内容,这是正确的。
要么删除返回类型:
let initialTrend series slen : unit =
let mutable s = 0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
或更改功能的工作方式:
let initialTrend (series: _ list) slen : double=
let mutable s = 0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
float s
但是,看看你最近的问题,你仍然坚持可变性。我建议在这里使用更高阶的函数:
let initialTrend (series: float []) : double =
Array.pairwise series |> Array.fold (fun s (x0, x1) -> x1 - x0 + s) 0.