我有一个整数数组,并希望执行以下操作:
s += array(index+1) - array(index)
Run Code Online (Sandbox Code Playgroud)
所以,我试过以下:
let mutable s =0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
Run Code Online (Sandbox Code Playgroud)
但我发了一个错误:
这个表达式预计有'double'类型,但这里有'unit'类型
UPDATE
完整的代码
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
Run Code Online (Sandbox Code Playgroud)
好吧,你告诉该函数将返回一个double并且错误消息告诉你它没有返回任何内容,这是正确的.
要么删除返回类型:
let initialTrend series slen : unit =
let mutable s = 0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
Run Code Online (Sandbox Code Playgroud)
或改变功能的工作方式:
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
Run Code Online (Sandbox Code Playgroud)
但是,看看你最近的问题,你仍然坚持可变性.我建议在这里使用更高阶的函数:
let initialTrend (series: float []) : double =
Array.pairwise series |> Array.fold (fun s (x0, x1) -> x1 - x0 + s) 0.
Run Code Online (Sandbox Code Playgroud)