Witam :) Mam 2 małe problemy które są powiązane bezpośrednio funkcjami, więc dlatego uznałem, że je zawrzę w jednym pytaniu. Jeżeli jednak trzeba będzie rozdzielić na 2 pytania to proszę o wiadomość :) Dopiero uczę się Swifta z książki i jestem przy funkcjach. Proszę, więc o wyrozumiałość. Na koniec rozdziału "dostałem" 2 zadania.
W pierwszym do kodu w 2 linijce:
func greetByMiddleName(name: (first: String, middle: String?, last: String)) {
guard let middleName = name.middle else {
print("Witaj")
return
}
print("Witaj, \(middleName)")
}
greetByMiddleName(name: ("Mateusz", nil, "Korniecki"))
mam dodać klauzuję where, która ma sprawdzać czy drugie nazwisko składa się z mniej niż 4 znaków. Jeżeli tak to ma się wykonać print("Witaj, \(middleName)"). Wiem jak użyć klauzury i jak za pomocą indexu pobrać dany znak a nawet słowo (w tym 2 to tylko w princie). Niestety pokazywał jak użyć klauzury tylko z cyframi a o stringach i characterach nawet się nie zająknął. Szukałem więcej informacji w internecie i w dokumentacji, ale nic więcej o where się nie dowiedziałem niestety. Nic nie znalazłem w kontekście Swifta. Za każdym razem jak próbowałem różnymi sposobami to kazało mi zamienić where na ",".
W drugim zadaniu natomiast muszę podzielić zakupy na dwie tabele. W jednej produkty bez fasoli a w drugiej same fasole. Zrobiłem kod tak:
let groceryList = ["zielona fasola", "mleko", "czarna fasola", "fasola pinto", "jabłko"]
func beanSifter(groceryList: [String]) -> (beans: [String], otherGroceries: [String]) {
var beans = [String]()
var otherGroceries = [String]()
for foods in groceryList {
if foods != "fasola" {
beans.append(foods)
}
else {
otherGroceries.append(foods)
}
}
return (beans, otherGroceries)
}
Niestety kod nie działa tak jak chciałem. Podobne do tego zadania było tylko kiedy pokazywał jak podzielić liczby z tabeli na liczby parzyste i nieparzyste, a tak to tylko "jednosłowe" stringi. Próbowałem to jakoś rozwikłać ale poległem niestety. Tutaj też próbowałem znaleźć informacje w internecie i w dokumentacji. Proszę chociaż o podpowiedź, a najlepiej o wytłumaczenie. Nie oczekuję oczywiście gotowca bo nie o to chodzi w nauce.