Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Pytanie o enum


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 08.06.2018 14:43

Czy zapis

enum COS { JEDEN[YY], DWA[YY], TRZY[YY] }

będzie równoznaczny z zapisem

enum COS[YY] { JEDEN, DWA, TRZY }

i czy będzie można go używać w ten sposób ?

new tab[COS];
//...

     tab[DWA[1]] = 6;

Użytkownik csMaster edytował ten post 08.06.2018 14:44

  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 050
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 08.06.2018 17:09

Enum to "tablica" jednowymiarowa, skąd w ogóle taki pomysł?


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 09.06.2018 18:17

enum [[_:]TagName] [(IncrementType)]
{
    [TagForConstant:]Constant1 [= Value1],
    [TagForConstant:]Constant2 [= Value2],
    ...
    [TagForConstant:]ConstantN [= ValueN]
}

Tak w sumie pojęcia nie mam co znaczy to [(IncrementType)] a poza tym skąd miałem wiedzieć że to tablica jednowymiarowa :D


  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 050
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 09.06.2018 18:38

Możesz zrobić tak

enum 
{
	WARTOSC_PIERWSZA = 0,
	WARTOSC_DRUGA,
	WARTOSC_TRZECIA
}

I wtedy kolejno wszystkie stałe w enumie będą miały wartość o 1 większą niż poprzednia. Czyli: WARTOSC_PIERWSZA = 0, WARTOSC_DRUGA = 1, WARTOSC_TRZECIA = 2 etc.

 

Ale możesz też zrobić tak:

enum (+= 111)
{
	WARTOSC_PIERWSZA = 0,
	WARTOSC_DRUGA,
	WARTOSC_TRZECIA
}

I wtedy WARTOSC_PIERWSZA = 0, WARTOSC_DRUGA = 111, WARTOSC_DRUGA = 222.

 

InrementType - Sposób inkrementacji. Jeśli nie określimy jakiegoś konkretnego sposobu (np. właśnie += 111 [na czym polega wyrażenie '+=' chyba nie muszę tłumaczyć]) to domyslnie będzie to += 1.

 

 

Jeśli chodzi o TagName, to nie jestem do końca pewny na jakiej zasadzie działa, ale wiem, że robiąc tak:

enum TAG_ENUMA
{
	WARTOSC_PIERWSZA = 0,
	WARTOSC_DRUGA,
	WARTOSC_TRZECIA
}

będziesz miał opcję zadeklarowania zmiennej w ten sposób:

new TAG_ENUMA:Zmienna

i będzie ona wtedy przyjmowała wartości z enuma, czyli zamiast

zmienna = 1

powinieneś wtedy zapisać

zmienna = WARTOSC_DRUGA

Praktyczne zastosowanie enuma możesz podejrzeć w silniku zp (konkretniej 4.3). Mercylezz użył go do indexowania tasków:

Spoiler

  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#5 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 10.06.2018 10:40

To akurat rozumiem bo jakieś 20% tego silnika poprawiałem >.<

No ale fajnie że ktoś mi to wytłumaczył :P


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych