以下是AddRange()
F#
我尝试使用管道运算符let a1 = [| 0 .. 99 |]
let a2 = Array.sub a1 5 10
printfn "%A" a2
,但这段代码都没有与我合作:
|>
这两个都没有:
a1 |> Array.sub 5 10
有可能吗?!
答案 0 :(得分:4)
运算符|>
发送函数的 last 参数。
所以它会是:
10 |> Array.sub a1 5
在另一种情况下,它是最后两个参数,但它们应该以元组形式发送:
(5, 10) ||> Array.sub a1
这是另一个可能更接近您所寻找的选项:
a1 |> Array.sub <|| (5, 10)
答案 1 :(得分:4)
我怀疑Array.sub
函数出于兼容性原因而具有此参数顺序。 OCaml version中的顺序是相同的,这是F#很久以前开始的。这有点不幸,因为这意味着该功能不太适合管道。
我可能会定义一个新的函数来反转参数的顺序。请注意,您可以定义自己的Array
模块,这样您就可以看到它以及所有其他数组函数:
module Array =
let subArray lo hi arr = Array.sub arr lo hi
现在你可以在管道中使用Array.subArray
而不使用其他类似管道的操作符(我认为这样做)使代码更难以阅读:
let something =
[| 0 .. 99 |]
|> Array.map (fun x -> x * 2)
|> Array.subArray 5 10