Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для StevenH
    Пользователь

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

    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
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну в первом случае ты создаёшь массив и из памяти сервера записываешь строки в этот самый массив.
    Во втором случае ты записываешь данные в память сервера и работаешь уже напрямую с памятью
    Я бы выбрал второй
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Nexius_Tailer (26.02.2016)
  4. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Я бы тоже отдал предпочтение второму варианту. Доступ к элементу массива по идее должен быть эффективнее, чем к 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, то проверку индекса можно опустить.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

 

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

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

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

Ваши права

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