F# 此表达式的类型应为';双倍';但是这里有类型';单位';
我创建了一个整数数组,并希望执行以下操作:F# 此表达式的类型应为';双倍';但是这里有类型';单位';,f#,F#,我创建了一个整数数组,并希望执行以下操作: s += array(index+1) - array(index) 因此,我尝试了以下方法: let mutable s =0 for i in 0 .. slen-1 do s <- series.[i+1] - series.[i] + s 设可变s=0 因为我在0。。slen-1 do s好的,您告诉我们函数将返回一个double,错误消息告诉您它不返回任何内容,这是正确的 或者,删除返回类型: let initialTrend se
s += array(index+1) - array(index)
因此,我尝试了以下方法:
let mutable s =0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
设可变s=0
因为我在0。。slen-1 do
s好的,您告诉我们函数将返回一个double,错误消息告诉您它不返回任何内容,这是正确的
或者,删除返回类型:
let initialTrend series slen : unit =
let mutable s = 0
for i in 0 .. slen-1 do
s <- series.[i+1] - series.[i] + s
好的,您告诉我们函数将返回一个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 slen=10
和let series=[|0..10 |]
我没有得到这个错误。你能分享一个吗?请参阅更新的问题plsWithlet slen=10
和let series=[|0..10 |]
我不知道这个错误。你能分享一个吗?请看更新的问题plsOK,我添加了一个例子,使用了折叠
。谢谢,但是如果我不想要成对
,假设我想处理每个索引及其后的第四个元素,是否有更高的函数!是的,有Array.windowed
可以达到这个目的。谢谢,这对我来说很好series |>Array.windowed 5 |>Array.fold(fun s x->(x |>Array.rev |>Array.head)-(x |>Array.head)+s)0 |>float
关于让函数返回double
的第二个建议,但是为什么要将int
转换为float
,而不是double
?这行吗?好的,我添加了一个例子,使用了一个折叠
。谢谢,但是如果我不想要成对
,假设我想要处理每个索引和它后面的第四个元素,那么有更高的函数吗!是的,有Array.windowed
可以达到这个目的。谢谢,这对我来说很好series |>Array.windowed 5 |>Array.fold(fun s x->(x |>Array.rev |>Array.head)-(x |>Array.head)+s)0 |>float
关于让函数返回double
的第二个建议,但是为什么要将int
转换为float
,而不是double
?这行得通吗?
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.