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

[ROZWIĄZANE] break w switch - czy potrzebne?


Najlepsza odpowiedź GwynBleidD , 09.05.2015 08:51

W PAWNie switch/case działa inaczej niż w większości innych języków programowania. Tutaj breaka się nie używa, bo kod każdego case jest objęty klamrami i tylko kod case spełniającego warunek zostanie wykonany.

Jeśli chcesz uniknąć porównań, możesz użyć łańcucha else if lub wrzucić switcha do funkcji i wykonywać w niej return w każdym case. Przejdź do postu


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 08.05.2015 19:30

Witam,

Mam pytanie odnośnie używania break w każdym z case. Jeżeli nie dam break to wszystkie case zostaną "przerobione"?


  • +
  • -
  • 0

#2 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 08.05.2015 20:06

Chodzi Ci o switch(id) np ?
Nie. Wywoła się tylko ten case, dla którego warunek jest spełniony (case 3: uaktywni sie gdy id = 3, lecz wtedy case 4: nie ma prawa się wywołać)

new id = 3
switch(id)
{
case 3: //wywoła się
{

}
case 20://Nie wywoła się.
{

}
}
//code po switchu. chb że chcesz kończyc na tym switchu funkcje gdy jest on spełniony wtedy dajesz w każdym case return / return PLUGIN_HANDLED/CONTINUE

Użytkownik NoLiFeR edytował ten post 08.05.2015 20:09

  • +
  • -
  • 0

#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 08.05.2015 20:12

Jednak wydaje mi się, że zostaną porównane wszystkie.

 

 

A co jak w switchu dam return? Wyjdzie z funkcji czy ze switcha? A break - ze switcha czy całej funkcji?

 

 

 

Edit:

@up

Wiem że case nie zostanie wywołane, ale chodzi mi o samo sprawdzenie warunku dla tej szufladki


  • +
  • -
  • 0

#4 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 08.05.2015 20:16

Jeżeli chodzi ci o same porównanie... Jest to zbędne... Możesz sobie to zrobić w osobnej funkcji, wtedy dajesz w case'ach return i dalej ci sie nie porównuje.

 

public funkcja1(id)
{
funkcja2(id) // Możesz sobie to przypisać do jakiejś zmiennej...
//code
}
funkcja2(id)
{
switch(id)
{
case 3:
{
return 1
}
case 20://Jeżeli wartość rowna jest 3 to nie zostanie porównane... (i tak, nie jestem na 100% pewien, lecz jeżeli case 3: porównuje się pierwsze tak musi być...)
{
return 2
}
}
return 0
}

Użytkownik NoLiFeR edytował ten post 08.05.2015 20:17

  • +
  • -
  • 0

#5 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 08.05.2015 20:30

untitleds.PNG

 

 

Nie. break można używać tylko w pętlach.


Użytkownik NoLiFeR edytował ten post 08.05.2015 20:34

  • +
  • -
  • 1

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 09.05.2015 08:51   Najlepsza odpowiedź

W PAWNie switch/case działa inaczej niż w większości innych języków programowania. Tutaj breaka się nie używa, bo kod każdego case jest objęty klamrami i tylko kod case spełniającego warunek zostanie wykonany.

Jeśli chcesz uniknąć porównań, możesz użyć łańcucha else if lub wrzucić switcha do funkcji i wykonywać w niej return w każdym case.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 09.05.2015 16:19

@Gwyn

 

Dzięki, o taką odpowiedź mi chodziło. Myślałem, że jest coś jak w C++.

 


  • +
  • -
  • 0

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.05.2015 12:59

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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