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

    Статус
    Оффлайн
    Регистрация
    20.10.2013
    Сообщений
    40
    Репутация:
    1 ±

    Что лучше new или static

    Всем привет, решил добавить несколько систем для своего мода, но не знаю как юзать лучше,

    Вопрос что лучше static или new.

    static:
    PHP код:
    static AdminNames[][64] = {
        
    "Неизвестно",
        
    "Мл.Модератор",
        
    "Модератор",
        
    "Гл.Модератор",
        
    "Мл.Администратор",
        
    "Администратор",
        
    "Гл.Администратор",
        
    "Основатель Проекта"
    }; 
    new:
    PHP код:
    new AdminNames[8][64] = {
        
    "Неизвестно",
        
    "Мл.Модератор",
        
    "Модератор",
        
    "Гл.Модератор",
        
    "Мл.Администратор",
        
    "Администратор",
        
    "Гл.Администратор",
        
    "Основатель Проекта"
    }; 
    Что же все таки эффективней?

    И еще если я буду использовать static то как его лучше использовать?
    просто static или static const?


    Тут тоже я должен использовать static?
    PHP код:
    new FloatMaxVehicleSpeed[212] = {
        
    160.00160.00200.00120.00150.00165.00110.00170.00110.00180.00160.00,
        
    240.00160.00160.00140.00230.00155.00200.00150.00160.00180.00180.00,
        
    165.00145.00170.00200.00200.00170.00170.00200.00190.00130.0080.000,
        
    180.00200.00120.00160.00160.00160.00160.00160.0075.000150.00150.00,
        
    110.00165.00190.00200.00190.00150.00120.00240.00190.00190.00190.00,
        
    140.00160.00160.00165.00160.00200.00190.00260.00190.0075.00075.000,
        
    160.00160.00190.00200.00170.00160.00190.00190.00160.00160.00200.00,
        
    200.00150.00165.00200.00120.00150.00120.00190.00160.00100.00200.00,
        
    200.00170.00170.00160.00160.00190.00220.00170.00200.00200.00140.00,
        
    140.00160.0075.000260.00260.00160.00260.00230.00165.00140.00120.00,
        
    140.00200.00200.00200.00120.00120.00165.00165.00160.00340.00340.00,
        
    190.00190.00190.00110.00160.00160.00160.00170.00160.0060.00070.000,
        
    140.00200.00160.00160.00160.00110.00110.00150.00160.00230.00160.00,
        
    165.00260.00160.00160.00160.00200.00160.00160.00165.00160.00200.00,
        
    170.00180.00110.00110.00200.00200.00200.00200.00200.00200.0075.000,
        
    200.00160.00160.00170.00110.00110.0090.00060.000110.0060.000160.00,
        
    160.00200.00110.00160.00165.00190.00160.00170.00120.00165.00260.00,
        
    200.00140.00200.00260.00120.00200.00200.0060.000190.00200.00200.00,
        
    200.00160.00165.00110.00200.00200.00260.00260.00160.00160.00160.00,
        
    140.00160.00260.00
    }; 
    Я знаю что если использовать new то при каждом коннекте игрока переменная будет создаваться.
    Если использовать static, она создается один раз (я так понял.) Если не прав подправьте.

    В каких случаях я должен использовать static?

    Deimos от тебя ответ не требуется...

  2. #2
    Аватар для A N D R E Y
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.12.2013
    Сообщений
    149
    Репутация:
    14 ±
    Да хотелось-бы тоже узнать, с целью повышения образованности...

  3. #3
    Аватар для Nikoo007
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    07.01.2014
    Адрес
    Florida, Miami
    Сообщений
    81
    Репутация:
    54 ±
    Static отличается от new тем, что static создаётся 1 раз в памяти и остаётся там до завершения программы, а new создаётся каждый раз при вызове функции и очищается по её окончании.
    Оптимизации никакой. Ибо если использовать static, в любом случае придётся обнулять её значение, а new это делает автоматически.


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

    Я почти всегда пользуюсь new, а так нужно по ситуации смотреть.

  4. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    На эту тему уже есть урок в моём Учебнике.

    Ок, обобщу ещё раз.
    Локальные переменные:
    С помощью ключевого слова new объявляются переменные, которые создаются в стеке и существуют только во время выполнения функции, в которой эти переменные объявлены. Обычно инициализируются нулями (если не указать другого значения).
    Через static же объявляются переменные, которые всё время находятся в секции данных. Они не создаются перед и не уничтожаются после выполнения функции. По сути это те же глобальные переменные, но которые доступны только внутри функции, в которой они объявлены. Сохраняют своё значение после предыдущего выполнения функции.
    Глобальные переменные:
    new - переменные, которые будут видны в пределах текущего исходного файла и подключаемых файлов (если эти файлы подключены после new).
    static - переменные, которые видны только в пределах текущего файла. Полезно, если вы пишете какой-нибудь инклуд и хотите, чтобы какая-то переменная была недоступна из мода и могла использоваться только в пределах вашего инклуда.
    Последний раз редактировалось Daniel_Cortez; 15.03.2014 в 21:06. Причина: глобальные переменные? в стеке?! no way!
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. 8 пользователя(ей) сказали cпасибо:
    #Vito (15.03.2014) Aurelius (27.02.2020) Elrmrnt-Kritik (10.03.2018) Glant (27.07.2016) Jeff_Monson (15.03.2014) L0ndl3m (14.01.2016) Salvacore (19.03.2014) seriu (14.01.2016)
 

 

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

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

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

Ваши права

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