Etykiety argumentów
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 54 z 86.
Swift pozwala kontrolować sposób odczytywania wywołań funkcji za pomocą etykiet argumentów. Etykieta argumentu to nazwa używana podczas wywoływania funkcji, a nazwa parametru to nazwa używana wewnątrz ciała funkcji.
Możesz określić oba, wpisując etykietę argumentu przed nazwą parametru:
func greet(to name: String) {
print("Hello, \(name)!")
}
greet(to: "Alice") // Wynik: Hello, Alice!Tutaj to jest etykietą argumentu (używaną podczas wywołania), a name jest nazwą parametru (używaną wewnątrz funkcji). Dzięki temu wywołanie brzmi bardziej naturalnie: „greet to Alice”.
Czasami chcesz całkowicie pominąć etykietę, aby wywołania były bardziej przejrzyste. Użyj podkreślenia (_) jako etykiety argumentu:
func square(_ number: Int) -> Int {
return number * number
}
print(square(5)) // Wynik: 25Bez podkreślenia trzeba by napisać square(number: 5). Podkreślenie znosi ten wymóg, dzięki czemu wywołanie jest prostsze, gdy nazwa funkcji już jasno określa jej przeznaczenie.
Wyzwanie
ŁatwyUtwórz dwie funkcje, które demonstrują różne techniki używania etykiet argumentów:
Funkcja 1: send
- Użyj etykiety argumentu
messagei nazwy parametrutext(typString) - Użyj etykiety argumentu
toi nazwy parametrurecipient(typString) - Zwróć ciąg znaków w formacie:
"Sending '[text]' to [recipient]"
Funkcja 2: double
- Użyj podkreślenia
_, aby pominąć etykietę argumentu - Nazwa parametru
number(typInt) - Zwróć liczbę pomnożoną przez 2
Po zdefiniowaniu obu funkcji wczytaj z wejścia dwa ciągi znaków i jedną liczbę całkowitą, a następnie wywołaj obie funkcje i wypisz wyniki w osobnych wierszach.
Otrzymasz następujące dane wejściowe:
- Pierwszy wiersz: tekst wiadomości (np.
"Hello") - Drugi wiersz: imię i nazwisko odbiorcy (np.
"Alice") - Trzeci wiersz: liczba do podwojenia (np.
"7")
Na przykład, jeśli dane wejściowe to "Hello", "Alice" i "7", wynikiem powinno być:
Sending 'Hello' to Alice
14Spróbuj swoich sił
// Wczytaj dane wejściowe
let messageText = readLine()!
let recipientName = readLine()!
let numberToDouble = Int(readLine()!)!
// TODO: Napisz swój kod poniżej
// Zdefiniuj funkcję 'send' z etykietami argumentów 'message' i 'to'
// Zdefiniuj funkcję 'double' z pominiętą etykietą argumentu przy użyciu '_'
// Wywołaj obie funkcje i wypisz wynikiTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift