Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: switch VS if else

  1. #1
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    18
    Репутация:
    0 ±

    switch VS if else

    Добрый вечер! Ребята скажите пожалуйста как будет лучше использовать??
    PHP код:
    new bomj_man[5][1]
    {
        
    1,
        
    2,
        
    3,
        
    4,
        
    5

    PHP код:
    new bomj_girl[6][1]
    {
        
    1,
        
    2,
        
    3,
        
    4,
        
    5,
        
    6

    switch:
    PHP код:
                switch(Player[playerid][pSex])
                {
                    case 
    1:
                    {
                        if(
    Change[playerid] -- == 0Change[playerid] = sizeof(bomj_man) - 1;
                        
    SetPlayerSkin(playeridbomj_man[Change[playerid]][0]);
                    }
                    default:
                    {
                        if(
    Change[playerid] -- == 0Change[playerid] = sizeof(bomj_girl) - 1;
                        
    SetPlayerSkin(playeridbomj_girl[Change[playerid]][0]);
                    }
                } 
    if else:
    PHP код:
                if(Player[playerid][pSex] == 1)
                {
                    if(
    Change[playerid] == sizeof(bomj_man) - 1Change[playerid] = 0;
                    else 
    Change[playerid] ++;
                    
    SetPlayerSkin(playeridbomj_man[Change[playerid]][0]);
                }
                else
                {
                    if(
    Change[playerid] == sizeof(bomj_girl) - 1Change[playerid] = 0;
                    else 
    Change[playerid] ++;
                    
    SetPlayerSkin(playeridbomj_girl[Change[playerid]][0]);
                } 
    Слышал еще Тернарный оператор можно как то
    Последний раз редактировалось Coopr; 23.04.2016 в 17:34.

  2. #2
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Как тебе будет удобнее,так и делай. Тут особой разницы нет. Я бы использовал if else



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  3. #3
    Аватар для TheMallard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    PHP код:
    if(Change[playerid] == sizeof(Player[playerid][pSex] ? bomj_man bomj_girl))
        
    Change[playerid] = 0;
    else
        
    Change[playerid] = 1;
    SetPlayerSkin(playeridPlayer[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]); 

  4. Пользователь сказал cпасибо:
    Coopr (23.04.2016)
  5. #4
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    18
    Репутация:
    0 ±
    Цитата Сообщение от TheMallard Посмотреть сообщение
    PHP код:
    if(Change[playerid] == sizeof(Player[playerid][pSex] ? bomj_man bomj_girl))
        
    Change[playerid] = 0;
    else
        
    Change[playerid] = 1;
    SetPlayerSkin(playeridPlayer[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]); 
    Может объяснить принцип работы пожалуйста

    - - - Добавлено - - -

    Вместо всего этого:

    PHP код:
                switch(Player[playerid][pSex])
                {
                    case 
    1:
                    {
                        if(
    Change[playerid] -- == 0Change[playerid] = sizeof(bomj_man) - 1;
                        
    SetPlayerSkin(playeridbomj_man[Change[playerid]][0]);
                    }
                    default:
                    {
                        if(
    Change[playerid] -- == 0Change[playerid] = sizeof(bomj_girl) - 1;
                        
    SetPlayerSkin(playeridbomj_girl[Change[playerid]][0]);
                    }
                } 
    У нас будет выглядить так я прав???
    PHP код:
                        if(Change[playerid] --/*(листаем на 1 назад)*/ == 0Change[playerid] = sizeof(Player[playerid][pSex] ? bomj_man bomj_girl) - 1;
                        
    SetPlayerSkin(playeridPlayer[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]);
                        
    SetPlayerSkin(playeridbomj_man[Change[playerid]][0]); 

  6. #5
    Аватар для Nash_Brigers
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2016
    Адрес
    Moscow
    Сообщений
    167
    Репутация:
    44 ±
    Цитата Сообщение от Coopr Посмотреть сообщение
    У нас будет выглядить так я прав???
    Да, только лишняя строчка:
    PHP код:
    SetPlayerSkin(playeridbomj_man[Change[playerid]][0]); 

  7. Пользователь сказал cпасибо:
    Coopr (23.04.2016)
  8. #6
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    18
    Репутация:
    0 ±
    PHP код:
        if(Change[playerid] --/*(листаем на 1 назад)*/ == 0Change[playerid] = sizeof(Player[playerid][pSex] ? bomj_man bomj_girl) - 1;
               
    SetPlayerSkin(playeridPlayer[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]); 
    Если вас не затруднит можете подробнее рассказать что да как это получилось, Что то про Тернарный оператор прочёл не не понял

  9. #7
    Аватар для Nash_Brigers
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2016
    Адрес
    Moscow
    Сообщений
    167
    Репутация:
    44 ±
    Цитата Сообщение от Coopr Посмотреть сообщение
    PHP код:
        if(Change[playerid] --/*(листаем на 1 назад)*/ == 0Change[playerid] = sizeof(Player[playerid][pSex] ? bomj_man bomj_girl) - 1;
               
    SetPlayerSkin(playeridPlayer[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]); 
    Если вас не затруднит можете подробнее рассказать что да как это получилось, Что то про Тернарный оператор прочёл не не понял
    В общем смотри.. Рассмотрим на примере:
    PHP код:
    Player[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0
    Расшифровываю: Player[playerid][pSex] не равен нулю ? тогда bomj_man[Change[playerid]][0] : в остальных случаях bomj_girl[Change[playerid]][0]

    Еслиб, к примеру, мужской пол у тебя был двойка:
    PHP код:
    (Player[playerid][pSex] == 2) ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0
    Учитель из меня ни какой, не знаю понятно ли..

  10. Пользователь сказал cпасибо:
    Coopr (23.04.2016)
  11. #8
    Аватар для TheMallard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Тернарный оператор работает так.

    условие ? результат1 : результат2

    Если условие true (>=1), то берется результат1, если условие false (0<=), то берется результат2. Ничего сложного.

  12. Пользователь сказал cпасибо:
    Coopr (23.04.2016)
  13. #9
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    18
    Репутация:
    0 ±
    Спасибо огромное ребята


    Код HTML:
    Player[playerid][pSex]/*(тут у нас пол 1(муж.)  2(жен))*/ ? bomj_man[Change[playerid]][0]/*Player[playerid][pSex] если выдаёт 1 то использует это*/ : bomj_girl[Change[playerid]][0]/*если 2 то используем это*/
    Правильно понял??

  14. #10
    Аватар для Nash_Brigers
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.03.2016
    Адрес
    Moscow
    Сообщений
    167
    Репутация:
    44 ±
    Цитата Сообщение от Coopr Посмотреть сообщение
    Спасибо огромное ребята


    Код HTML:
    Player[playerid][pSex]/*(тут у нас пол 1(муж.)  2(жен))*/ ? bomj_man[Change[playerid]][0]/*Player[playerid][pSex] если выдаёт 1 то использует это*/ : bomj_girl[Change[playerid]][0]/*если 2 то используем это*/
    Правильно понял??
    Не совсем.. Если у тебя 1 мужики, то:
    PHP код:
    (Player[playerid][pSex] == 1) ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]; 
    Если просто Player[playerid][pSex], то он посмотрит есть ли значение в этой переменной или 0 в ней.


    В общем
    PHP код:
    Player[playerid][pSex] ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]; 
    равносильно
    PHP код:
    (Player[playerid][pSex] != 0) ? bomj_man[Change[playerid]][0] : bomj_girl[Change[playerid]][0]; 
    Последний раз редактировалось Nash_Brigers; 23.04.2016 в 19:32.

  15. Пользователь сказал cпасибо:
    Coopr (23.04.2016)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •