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

时间:2015-06-25 21:23:21

标签: swift operator-overloading range

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

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

然而,当我尝试:

(1...2)++

我明白了:

  

一元运算符&#39; ++&#39;不能应用于类型(范围)的操作数

任何想法或我应该放弃?

编辑:

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

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

1 个答案:

答案 0 :(得分:1)

@hamstergene是对的。您不能++范围字面值,就像您可以++常规的Int一样。

例如,你不能写:

let x = 5++

如果将范围分配给变量然后调用运算符,则运算符可以正常工作:

var r = 1..<3

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