Skocz do zawartości
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek

Polecane posty

Korzystanie z enum

 

1. Uproszczone wprowadzenie

"enum" jest to struktura przez którą możemy zamiast surowych liczb wprowadzać nazwy i dzięki temu jest nam łatwiej z nich korzystać.  Najprostszym przykładem będzie tutaj zbiór broni w sourcemodzie, gdzie każda broń ma swój numer i swoją enumową nazwę (zobacz też pełny temat dotyczący spisu broni
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!)
:

enum CSWeaponID
{
	CSWeapon_NONE = 0,
	CSWeapon_P228,
	CSWeapon_GLOCK,
	CSWeapon_SCOUT,
	CSWeapon_HEGRENADE
	//(..)
};

Powyższy kod jest deklaracją enuma o nazwie CSWeaponID, gdzie jego zawartością są kolejno CSWeapon_NONE, CSWeapon_P228 i tak dalej. Można zauważyć, że do pierwszej nazwy przypisane jest 0, i taką będzie przyjmować wartość CSWeapon_NONE = 0. Następne nazwy mają domyślnie wartość o jedną więcej, czyli jest to ciąg liczb naturalnych (0, 1, 2, 3, 4 i tak dalej). W taki sposób możemy korzystać z funkcji takich jak CS_GetWeaponPrice
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! bez zapamiętywania poszczególnych numerów broni. Przykładowo osobiście nie mam pojęcia który numer w enumie ma broń AWP, ale mogę po prostu posłużyć się tym: CSWeapon_AWP.

 

2. Numeracja i licznik

Jak już zostało wspomniane, domyślnie licznik enuma działa jak ciąg liczb naturalnych. Każda następna wartość jest większa od poprzedniej o jeden. Dlatego w tym przypadku:

enum {
  wartosc1 = 0,
  wartosc2 = 10,
  wartosc3,
  wartosc4 = 30
}

wartosc3 będzie równa 11. Dzieje się tak, ponieważ nawet jeśli manualnie "ustawimy" liczenie na co 10, kompilator nie będzie wiedział co mamy na myśli. Musimy użyć następującego sposobu:

enum (+=10) {
  wartosc1 = 0,
  wartosc2,
  wartosc3
}

W takim wypadku wartosc2 jest równa 10, a wartosc3 20. Możemy tak również zrobić w przypadku mnożenia na przykład: (*=2) 

 

Bibliografia

https://amxx.pl/topic/1699-troche-o-enum/
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! https://forums.alliedmods.net/showthread.php?t=140103
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! i własne doświadczenie

  • Lubię to! 4
  • Kocham to! 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
14 godzin temu, plx211 napisał:

enum to nie struktura! to jest błąd karygodny 🙂
enum to typ wyliczeniowy https://pl.m.wikipedia.org/wiki/Wyliczeniowy_typ_danych
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

 

https://forums.alliedmods.net/showthread.php?t=312822
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! hmm 🙂

  • Lubię to! 1
  • Wow! 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Napisano (edytowany)

Enum struct (miło wiedzieć że coś takiego dodali 🙂 )  to nie struktura a lukier składniowy na tablice i enum'a imitujący strukture.

Żeby nie było nie czepiam się poradnika, bo dobrze że ktoś napisał, brakuje tutaj jedynie przykładu z przesunięciem bitowym (przydaje się) 😄

 

+1 za link 🙂

 

p.s.

Z tego co widzę mogą się pojawić tutaj problemy z tablicami/"stringami" w tym

 

 

Edytowano przez plx211
  • Lubię to! 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×