Array+Extension.swift 737 B

12345678910111213141516171819202122232425
  1. //
  2. // ArrayExtension.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 10/08/14.
  6. // Copyright (c) 2014 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. extension Array {
  9. /** split in chunks with given chunk size */
  10. func chunks(size chunksize: Int) -> [Array<Element>] {
  11. var words = Array<Array<Element>>()
  12. words.reserveCapacity(self.count / chunksize)
  13. for idx in stride(from: chunksize, through: self.count, by: chunksize) {
  14. words.append(Array(self[idx - chunksize..<idx])) // slow for large table
  15. }
  16. let reminder = self.suffix(self.count % chunksize)
  17. if !reminder.isEmpty {
  18. words.append(Array(reminder))
  19. }
  20. return words
  21. }
  22. }