我对使用/重载“范围步长”运算符(.. ..)感兴趣,但是我一生都无法找到如何使用它的方法。
在文档中说
// 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}
吗? 最佳答案
spec 并不明确,但是给出的唯一示例在序列表达式中。这以及其他所有方法都无法奏效的事实似乎证实了您的结论。
仅供引用-这是范围运算符的相关文档。
Operators.( .. )<^T>
Operators.( .. .. )<^T,^Step>
Section 3.8.2还提到了(.. ..)
的特殊处理,因此可以放心地假设它除了典型的功能/运算符之外还受到限制/行为的限制。
关于F#(.. ..)运算符使用/重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8852776/