0
ランレングス符号化とデコードを実行するコードを書きました。私は配列の拡張のメソッドとして自分のエンコーディング関数を持っていますが、私は同様の方法でデコードを行うことはできません。これは可能ですか?拡張機能に新しいジェネリック型を導入する方法はありません。汎用フリー機能を配列拡張に変換
func runLengthDecode<T: Equatable>(_ runLengthEncoding: [(element: T, count: Int)]) -> [T] {
return runLengthEncoding.flatMap{ repeatElement($0.element, count: $0.count)}
}
この関数がArrayのメソッドであってもいいと思います。代わりに、アレイの拡張を拘束する
extension Array<T> where Element == (element: T, count: Int) {
func runLengthDecode() -> [T] {
return self.flatMap{ repeatElement($0.element, count: $0.count)}
}
}
おやおや、私はどのように私を知りませんこれを逃した! – Alexander