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

Реклама


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

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

    Переменные

    Подскажите, в чем отличие между new, static_const и const?

  2. #2
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    Pro-Pawn.Ru
    Сообщений
    3,428
    Репутация:
    1079 ±
    Если воспользоваться поиском, можно найти вопросы на ваши вопросы. Данные вопросы описываются в книге от Daniel_Cortez, а также в некоторых темах.

    Переменная new - величина, которая может менять своё значение в процессе выполнения скрипта.
    PHP код:
    new <тип>:<имя> = <начальное значение>; 
    В Pawn существуют следующие типы данных:
    • Целый (не имеет названия) - целые числа
    • Вещественный (Float) - числа с точкой
    • Логический (bool) - истина/ложь (true/false)
    • Файловый (File)


    Константа - величина, не меняющаяся в процессе выполнения скрипта. В Pawn константы объявляются почти так же, как и переменные, однако каждое объявление начинается со слова const:
    PHP код:
    const <тип>:<имя> = <значение>; 
    Внимание! В отличие от переменных (new), в константах нужно обязательно указывать значение.

    Цитата Сообщение от Учебник Pro-Pawn.Ru
    Локальные static-переменные создаются не в стеке (как в случае с new), а в секции данных, благодаря чему сохраняют своё значение даже после окончания выполнения функции.
    Например, если внутри функции объявить переменную с атрибутом static и присвоить ей значение 3, то при следующем вызове функции переменная будет иметь начальное значение не 0, а 3, т.к. оно сохранилось с прошлого раза.

    Также можно объявить и глобальную переменную с атрибутом static, но она будет видна только в пределах того файла, в котором она объявлена.
    Пример: если static-переменная объявлена внутри включаемого файла "functions.inc", эта переменная будет видна только в пределах того файла, в основном файле (например, "main.pwn") её не будет существовать.
    PHP код:
    stock x
    Цитата Сообщение от Daniel_Cortez
    Выбор между new/static на эффективность абсолютно никак не влияет. Тут дело не в эффективности, а в удобстве скриптера.

    Всё это уже было описано в моём Учебнике.

    Обобщу ещё раз.
    Локальные переменные:
    С помощью ключевого слова new объявляются переменные, которые создаются в стеке и существуют только во время выполнения функции, в которой эти переменные объявлены. Обычно инициализируются нулями (если не указать другого значения).
    Через static же объявляются переменные, которые всё время находятся в секции данных. Не создаются перед и не уничтожаются после выполнения функции. По сути это те же глобальные переменные, но они видны только в пределах той функции, в которой они объявлены. Сохраняют своё значение после предыдущего выполнения функции.
    Глобальные переменные:
    new - переменные, которые будут видны в пределах текущего исходного файла и подключаемых файлов (если эти файлы подключены после new).
    static - переменные, которые видны только в пределах текущего файла. Полезно, если вы пишете какой-нибудь инклуд и хотите, чтобы какая-то переменная была недоступна из мода и могла использоваться только в пределах вашего инклуда
    Более подробную информацию можно узнать в данной теме: Нажмите сюда

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

    Статус
    Оффлайн
    Регистрация
    30.11.2015
    Сообщений
    30
    Репутация:
    0 ±
    спасибо. подскажите, в каком случае какой тип лучше использовать?

 

 

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

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

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

Ваши права

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