Witam,
Mam pytanie odnośnie używania break w każdym z case. Jeżeli nie dam break to wszystkie case zostaną "przerobione"?
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.
|
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
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"?
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
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
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
Napisano 09.05.2015 08:51 Najlepsza odpowiedź
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ę.
Napisano 09.05.2015 16:19
@Gwyn
Dzięki, o taką odpowiedź mi chodziło. Myślałem, że jest coś jak w C++.
Napisano 10.05.2015 12:59
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
0 użytkowników, 0 gości, 0 anonimowych