Menu
Coddy logo textTech

Podstawy domknięć

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

Domknięcie to samodzielny blok kodu, który możesz przekazywać i wywoływać później. Pełna składnia określa typy parametrów i zwracany typ:

let double = { (n: Int) -> Int in
    return n * 2
}
print(double(5))                  // 10

Swift może wywnioskować typy, gdy kontekst jest jasny, więc rzadko zapisujesz je w długiej formie. Wewnątrz map, filter itd. standardem jest krótsza składnia skrócona:

let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 }    // najkrótsza wersja, $0 to pierwszy argument

Domknięcia są wartościami — możesz przechowywać je w zmiennych, zwracać z funkcji i przekazywać jako argumenty. Właśnie dlatego map działa.

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wiersze danych wejściowych:

  1. Liczbę całkowitą x
  2. Rozdzieloną przecinkami listę liczb całkowitych

Zdefiniuj trzy domknięcia, każde typu (Int) -> Int:

  • addX dodaje x do argumentu
  • square zwraca kwadrat argumentu
  • negate zwraca argument z przeciwnym znakiem

Zastosuj każde domknięcie do każdego elementu listy za pomocą map. Wypisz trzy wiersze, po jednym dla każdego domknięcia, z wynikami połączonymi za pomocą ,:

addX: ...
square: ...
negate: ...

Dla danych wejściowych 10 w wierszu 1 i 1,2,3 w wierszu 2 wynikiem jest:

addX: 11,12,13
square: 1,4,9
negate: -1,-2,-3

Spróbuj swoich sił

let x = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: zdefiniuj trzy domknięcia (Int) -> Int i zastosuj każde z nich do nums za pomocą map
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