为swift Range类型创建自定义运算符



我认为为Swift范围添加一些自定义运算符会很有趣(而且可能很有用)。例如,将范围增加一:

postfix func ++ <I : ForwardIndexType where I : Comparable>(inout lhs: Range<I>) -> Range<I> {
    lhs.endIndex++
    return lhs
}

然而,当我尝试时:

(1...2)++

我得到:

一元运算符"++"不能应用于(Range)类型的操作数

有什么想法吗?还是我应该放弃?

编辑:

我还遇到了通过范围作为参数的问题:

someFunc(range : Range<Int>) {
   range++

@hamstergene是对的。你不能++是一个范围文字,就像不能++是一个普通的旧Int一样。

例如,你不能写:

let x = 5++

如果您将范围分配给一个变量,然后调用操作员:,则操作员会工作

var r = 1..<3
r++      // r == 1..<4

最新更新