Apple swift - typy wyliczeniowe - do czego służą?

0

Witam serdecznie,
Uczę się Swifta od Apple i natrafiłem na rozdział poświęcony typom wyliczeniowym:

enum TextAligmment: Int{
    case Left = 20
    case Right = 30
    case Center = 40
    case Justifify = 50
}

jakie jest zastosowanie tego? Do czego się wykorzystuje te typy?

Dlaczego warto używać typy wyliczeniowe, a nie np. tablice z wartościami lub klasy?

0

nie znam Swift ale zgaduje ze najpopularniejsze to switch
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html

oprocz tego przechowywanie wartosci w klasach itd.

0

Na pewno to od Apple? Przykład który podałeś jest z deczka bez sensu (Użycie w TextAlignment enum z associated values). Przeglądnąłem też z ciekawości Apple Guide dla Swift 4 i nigdzie czegoś takiego nie widziałem.

A tak w skrócie gdzie ich używam: (associated values) - zazwyczaj tam gdzie mam do czynienia z magic numbers, statycznymi nazwami zasobów, definiowania kodów HTTP, definiowania np. endpointów w prostym rest-kliencie. Czyste enumy - jak nazwa wskazuje do deklarowania prostych typów wyliczeniowych niezwiązanych kompletnie z żadną konkretną wartością - np. definiowanie określonych akcji użytkownika na UI. Dlaczego jest stosować zamiast tablic czy klas? Zazwyczaj dlatego że jest to czytelniejsze w kodzie, bezpieczniejsze (enumy są typami przekazywanymi poprzez wartość) i mają minimalny narzut na pamięć.

0

Tak, to jest kod z książki :) Czyli to jest taka "mała baza danych" - np. kodów błędów http, informacji włączony/wyłączony, widoczny/niewidoczny itp? I do takich rzeczy lepiej stosować właśnie te enumy?:)

0

Nie zgodzę się z określeniem "mała baza danych" w tym przypadku bo jest ono mylące. Jeśli masz enum reprezentujący dni tygodnia to nie znaczy że to że to jest baza dni tygodnia tylko że masz typ który może przyjąć jedną z siedmiu wartości - w przypadku enumów bez associated values to w zasadzie tyle, zawartość enuma służy po prostu utrzymaniu lepszej czytelności kodu i bezpieczeństwu bo kompilator wie że dana zmienna może przyjąć tylko jedną z siedmiu dozwolonych wartości więc jeśli spróbujesz gdzieś tam przypisać coś innego niż jeden z siedmiu dni albo wykonywać jakąś niedozwoloną operację (np. porównania z innym typem) to się po prostu nie skompiluje :)

Enumy z associated values to trochę inna bajka, dla mnie associated values przydaje się gdy chcemy zserializować zmienną z tym typem wyliczeniowym i gdzieś ją zapisać (albo w DB albo wysłać przez RESTa) i przy operacji odwrotnej.

A propos książki - można wiedzieć tytuł i autora? Podałeś co prawda przykład bez kontekstu ale sama nazwa i sposób definicji tego enuma trąci strasznie C/Obj-C gdzie z automatu były one intami i miały zawsze przyporządkowaną wartość liczbową (w Swifcie nie mamy takich ograniczeń). Podejrzewam więc że książka może nie być najlepszym przewodnikiem tutaj :)

0

Dziękuję bardzo za wyjaśnienie :)
Uczę się między innymi z tej książki: https://helion.pl/ksiazki/programowanie-w-jezyku-swift-big-nerd-ranch-guide-matthew-mathias-john-gallagher,pswfdp.htm#format/d - i z niej był ten kod :)

1

Z doświadczenia dodam, że emuny to jedna z rzeczy które co do zasady jest słabo wytłumaczona w tutorialach etc. Nie przejmuj się jednak, intuicyjne stosowanie ich przyjdzie wraz ze sklillem. Chociaż przyznaje, że niektórym nie przychodzi nigdy.

1

Big Nerd Ranch mieli dobre opinie jak chodziło materiały o Obj-C. Przy Swifcie gdzieś mignęła mi opinia że nie jest już z nimi tak fajnie - ale osobiście nie korzystałem z ich materiałów od bardzo dawna. Tak czy siak masz przecież Apple Swift Guide - naprawdę fajnie napisany, aktualny i o dziwo bez jakichś większych głupot w przykładach. Po co płacić za jakieś polskie tłumaczenie jakiejś zagranicznej książki ludzi którzy nie są u źródła?

0

Bardzo dziękuje Wam za informację :) Fajnie że jest tu ktoś, kto może podpowiedzieć ze SWIFTem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1