Convert generic free function into Array extension

后端 未结 1 1239
萌比男神i
萌比男神i 2020-12-12 08:40

I wrote some code to perform run length encoding and decoding. I have my encoding function as a method in an extension to Array, but I can\'t make the decoding in a similar

相关标签:
1条回答
  • 2020-12-12 08:50

    Instead of constraining the array extension move the constraint to your method:

    extension Array {
        func runLengthDecode<T: Equatable>() -> [T] where Element == (element: T, count: Int)  {
            return flatMap{ repeatElement($0.element, count: $0.count) }
        }
    }
    

    or simply

    extension Array {
        func runLengthDecode<T: Equatable>() -> [T] where Element == (element: T, count: Int)  {
            return flatMap(repeatElement)
        }
    }
    
    0 讨论(0)
提交回复
热议问题