2015-06-25 89 views
0

创建运营商定制我认为这将是有趣的(也可能是有用的)添加一些运营商定制的雨燕范围。例如,由一个增长的范围:为迅速范围类型

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

然而,当我尝试:

(1...2)++ 

我得到:

元运算符 '++' 不能应用到操作数类型(范围)

任何想法或者我应该放弃?

编辑:

我也得到了与传递范围为参数的问题:

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

尝试使用没有按”操作:如果您指定的范围内给一个变量,然后调用操作

let x = 5++ 

您的运营工作没有现有的意义。 –

+2

范围字面值是一个不可改变的值,不能作为'inout'传递。首先赋值给一个可变的var:'var x = 1 ... 2; X ++'。 – hamstergene

+0

好的 - 让我回过头来看,因为我还有其他问题的例子。 – rghome

回答

1

@hamstergene是正确的。你不能++一系列文字,就像你不能++一个普通的旧Int

例如,你可以不写:

var r = 1..<3 

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