Menu
Coddy logo textTech

Domknięcia końcowe

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 39 z 56.

Gdy domknięcie jest ostatnim argumentem funkcji, możesz zapisać je poza nawiasami. To forma trailing-closure, dzięki której kod Swift czyta się naturalnie.

let nums = [1, 2, 3]
// Standardowa forma
let a = nums.map({ $0 * 2 })
// Forma z domknięciem na końcu
let b = nums.map { $0 * 2 }

Jeśli domknięcie jest jedynym argumentem, nawiasy również znikają. Dlatego wszystko, co do tej pory widziałeś, wygląda jak niestandardowa instrukcja sterująca.

Możesz napisać własne funkcje przyjmujące domknięcia w ten sam sposób:

func repeatN(_ n: Int, action: () -> Void) {
    for _ in 0..<n {
        action()
    }
}
repeatN(3) {
    print("hi")
}

Forma z domknięciem końcowym sprawia, że zapis repeatN(3) { ... } wygląda jak wbudowana pętla. Właśnie o to chodzi: tworzone przez ciebie struktury sterujące wyglądają tak samo jak te z biblioteki standardowej.

challenge icon

Wyzwanie

Łatwy

Zdefiniuj funkcję collect, która:

  • Przyjmuje liczbę całkowitą n i domknięcie builder: (Int) -> String
  • Wywołuje builder dla każdego i od 1 do n (włącznie) i zwraca tablicę wynikowych ciągów znaków

Wczytaj liczbę całkowitą ze standardowego wejścia, wywołaj collect z tą liczbą, używając domknięcia końcowego, które dla każdej wartości tworzy "i=<i>", a następnie wypisz połączony wynik, używając ,.

Dla wejścia 4 wynikiem jest i=1,i=2,i=3,i=4.

Spróbuj swoich sił

let n = Int(readLine()!)!

// TODO: func collect(_ n:Int, builder:(Int)->String) -> [String]
// następnie wywołaj collect(n) { ... } i wypisz wynik połączony za pomocą ","
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift