String should be some kind of MutableCollection. if we really want to restrict
subscript of String should be { get } only, then we should consider make some
extension methods of MutableCollection should available on
SubrangeReplaceablecollection too.
For example:
>
> var c = [1, 2, 3, 4]
> print(c.reversed()) // OK
>
>
> var d = "1234"
> print(d.reversed()) // OK
They are both fine.
> var a = [1, 2, 3, 4]
> a.reverse()
> print(a) // OK
>
>
> var b = "1234"
> b.reverse() // no function
> print(b)
But this is weird.
String has String.reversed() function,
but it does not have String.reverse() function which is MutableCollection only.
I think, MutableCollection.reverse(), swapAt(_:_:), .partition(by:), sort(by:),
should also be available with RangeReplaceableCollection.
> 在 2017年12月6日,06:55,Dave Abrahams <[email protected]> 写道:
>
>
>
> Sent from my iPhone
>
>> On Dec 5, 2017, at 12:19 AM, Cao, Jiannan via swift-dev
>> <[email protected]> wrote:
>>
>>
>> But, I mean, what subscript (restrict to the length) could do is subset of p
>> replaceSubrange could do, right?
>
> True but that would imply the opposite of the refinement relationship you’re
> suggesting. A derived protocol has to have a subset of the behavior of the
> protocol it refines.
_______________________________________________
swift-dev mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-dev