> On Jan 20, 2017, at 6:11 PM, Joe Groff <[email protected]> wrote:
>
>
>> On Jan 20, 2017, at 5:15 PM, Ben Cohen via swift-evolution
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>>
>>> On Jan 20, 2017, at 3:29 PM, Jaden Geller via swift-evolution
>>> <[email protected] <mailto:[email protected]>> 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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution