Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 3 из 3
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    469
    Репутация:
    13 ±

    Switch или Двумерный массив?

    Всем привет. Что же лучше, свич или двумерный массив?

    Switch:
    PHP код:
    new nation[7];
    switch(...)
    {
        case 
    1nation "текст1";
        case 
    2nation "текст2";
        case 
    3nation "текст3";

    или Двумерный массив:
    PHP код:
    // в начале
    new nationality_name[3][7] =
    {
        {
    "Текст1"},
        {
    "Текст2"},
        {
    "Текст3"}


  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Ну в первом случае ты создаёшь массив и из памяти сервера записываешь строки в этот самый массив.
    Во втором случае ты записываешь данные в память сервера и работаешь уже напрямую с памятью
    Я бы выбрал второй
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Nexius_Tailer (26.02.2016)
  4. #3
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Онлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,662
    Репутация:
    2144 ±
    Я бы тоже отдал предпочтение второму варианту. Доступ к элементу массива по идее должен быть эффективнее, чем к 3 разным значениям через switch, да и дополнительный буфер для копирования строкового значения не нужен.
    Главное не забывать проверять индекс, чтобы не допустить выхода за пределы массива.
    Кстати, тот двумерный массив необязательно делать глобальным, можно его и внутри функции объявить, только нужно использовать для объявления ключевое слово static вместо new, чтобы содержимое массива, которое уже есть в секции данных, не копировалось лишний раз в стек.
    PHP код:
    stock PrintSomeText(x)
    {
        static const 
    strings[3][] =
        {
            {
    "Sample text 1"},
            {
    "Sample text 2"},
            {
    "Sample text 3"}
        };
        if ((
    0) || (sizeof(strings) - 1))
            return 
    0;
        print(
    strings[x]);
        return 
    1;

    Впрочем, та проверка значения в X не обязательна. Если вы уверены, что X в данном примере не может принимать никаких значений кроме 0, 1 или 2, то проверку индекса можно опустить.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  5. 2 пользователя(ей) сказали cпасибо:
    BadPawn (27.02.2016)StevenH (03.03.2016)
 

 

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

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

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

Ваши права

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