> On Jan 20, 2017, at 6:11 PM, Joe Groff <jgr...@apple.com> wrote:
> 
> 
>> On Jan 20, 2017, at 5:15 PM, Ben Cohen via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> 
>>> On Jan 20, 2017, at 3:29 PM, Jaden Geller via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> Wouldn’t `x[…]` be more consistent with these other syntaxes?
>>> 
>> 
>> Maybe (though are those extra characters really telling you much?). 
>> 
>> But you can’t write that in Swift – you’d need a 0-argument operator.
>> 
>> (Or a […] postfix operator I guess if you wanted to try and sneak that 
>> through, but that is also not allowed…  :)
> 
> Technically, you can, since operators are function values:
> 
> struct Foo {}
> struct Woo { subscript(_: (Foo, Foo) -> Foo) -> Int { return 0 } }
> func ...(_ x: Foo, _ y: Foo) -> Foo { return x }
> 
> Woo()[...]
> 
> Whether you *want* to, though…
> 
> -Joe


I stand corrected, this totally works! Ship it...

extension String: Collection { }
extension Collection {
    subscript(_: (Self,Self)->Void) -> SubSequence {
        return self[startIndex..<endIndex]
    }
    static func ...(_ x: Self, _ y: Self) { fatalError() }
}


let s = "abcdef"
print(s[...])


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to