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

Creating custom operators for swift Range types

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

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

然而,当我尝试时:

(1...2)++

我得到:

Unary operator '++' cannot be applied to operand of type (Range)

有什么想法或者我应该放弃吗?

编辑:

我也遇到了将范围作为参数传递的问题:

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

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

例如,你不能写:

let x = 5++

如果您将范围分配给变量然后调用运算符,则您的运算符有效:

var r = 1..<3

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