2015-02-22 29 views

Odpowiedz

22

Powiedziałbym, że mapa nie jest przeznaczona do tego rodzaju operacji. Tworzy nową sekwencję opartą na innych elementach sekwencji, ale nie chcesz tworzyć sekwencji, chcesz tylko iterować je i stosować do nich funkcję. W szybkim tempie nie ma funkcji wyższego rzędu, która pasuje do tego, co chcesz, mam nadzieję, że wkrótce coś dodadzą. Najlepsze, co możesz zrobić, to użyć pętli for lub napisać własną funkcję, która robi to, co chcesz.

Chciałbym zaproponować, aby napisać swój własny functon (w oparciu o to, co Scalas foreach jest):

extension Array { 

    func foreach(function: T ->()) { 
     for elem in self { 
      function(elem) 
     } 
    } 
} 

aktualizowana o Swift 2.0

forEach dodany do SequenceType, więc jest dostępny :

(cell.contentView.subviews as [UIView]).forEach { $0.removeFromSuperview() } 
+4

Uzgodnione. Jest to niewłaściwe wykorzystanie mapy. Mapa nie jest uniwersalnym zamiennikiem for-in. –

+0

Okay, zgodzili się. Gdzieś po drodze czytałem, żeby nie używać funkcji wyższych rzędów dla ich efektów ubocznych. – ff10