gpt4 book ai didi

F# (.. ..) 运算符使用/重载

转载 作者:行者123 更新时间:2023-12-04 19:16:34 30 4
gpt4 key购买 nike

我对使用/重载“范围步长”运算符(.. ..)很感兴趣,但我终其一生都无法了解如何使用它。

在文档中它说

// Usage:
start .. step .. finish

但是在 F# shell 中尝试会出现错误:
> let x = 1 .. 2 .. 7;;

let x = 1 .. 2 .. 7;;
----------^^

stdin(54,11): error FS0010: Unexpected symbol '..' in binding. Expected incomplete structured construct at or before this point or other token.

但是,可以“明确地”调用它:
> let x = (.. ..) 1 2 7;;

val x : seq<int>

是否只能将此运算符用于列表/序列构造,例如 [1..2..7]seq {1..2..7} ?

最佳答案

section 6.3.12 of the spec 涵盖了此运算符的用法。 (范围表达式)。内置(.. ..)运算符适用于任何类型的适当 (+)Zero成员,但你可以重新定义它来做其他事情(注意这个例子是无意义的):

let (.. ..) x y z = 
Seq.map (fun (s:string) -> s.[z] + y) x

let result = seq { ["test"; "func"] .. (char 1) .. 2 } // contains 't' 'o'

关于F# (.. ..) 运算符使用/重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852776/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com