2016-01-27 12 views
7

Mam ten fragment kodu, który działa prawidłowo:argumenty Zamknięcie odwołuje pozycji wewnątrz zagnieżdżonych zamknięcia w szybkim

var discoverEvents = events.map { event in 
    userEvents.find { $0.eventID == event.eventID } ?? event 
} 

Zastanawiam się, czy istnieje jakiś sposób odwołać event przez położeniu wewnątrz find jakoś tak:

var discoverEvents = events.map { userEvents.find { $$0.eventID == $0.eventID } ?? $0 } 

czy to jednolinijkowe?

+2

Osobiście, mam nadzieję, że nie, w momencie, w którym masz zagnieżdżone zamknięcia, lepiej być jawnym i nazywać rzeczy. Składnia $ pozycyjna jest przeznaczona dla krótkich i szybkich rzeczy, takich jak '.map {$ 0.name} ', gdzie możesz łatwo wziąć wszystko na pierwszy rzut oka. –

+1

@DavidBerry Całkowicie się zgadzam, jestem ciekawy, czy to w ogóle możliwe :) –

Odpowiedz

2

Nie, to niemożliwe. Wewnętrzna $0 cienie zewnętrzną, i nie ma innego sposobu odniesienia się do $0 w zewnętrznym zasięgu.

Jak @DavidBerry wspomina, ta składnia jest przeznaczona dla anonimowych funkcji krótkich. W przeciwnym razie sytuacja może być bardzo myląca.

Powiązane problemy