为 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
我认为为 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