Avatar
RangeReplacableCollectionのreplaceSubrangeメソッドが、レンジとして RangeExpression というプロトコルを渡すようになっていた https://developer.apple.com/documentation/swift/rangeexpression
2:08 PM
{Countable}{Closed}Range の4種類がこれを満たしていて
2:09 PM
RangeExpression.relative(Collection) で Range に変換できるみたいで
2:09 PM
@koher のよく言ってる4種類のレンジのオーバーロードの話って、これで解決する?
2:10 PM
https://developer.apple.com/documentation/swift/rangereplaceablecollection/2853454-replacesubrange ドキュメントだと Range<Index> を取っていて、 RangeExpression になってないのだけど。
2:12 PM
同時にもう一個気になった事があって、 Protocol Extensionで提供されたメソッドが mutating のとき、conformしてる型がclassだと、 var でないとメソッドが呼び出せない。 自分でconformするときは nonmutating func でconformできるのに。 このおかげで、本当は replaceSubrange だけ実装すればいい場面で、 append やら、なにもかも、デフォルト実装の恩恵がうけられない。