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

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

    stock, static, const

    Раньше сидел на другом форуме, решил зайти на ваш и был удивлен. Тут совсем другой код, не понятный мне. Кто может объяснить, в каких случаях использовать static, const, static const и ПЕРЕМЕННУЮ stock. Буду рад, если вы еще напишите, в чем различие между new и этим

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

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Если владеете английским языком, то на странице официальной документации Pawn есть описание различий 60-62 стр.
    http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf

    Если в двух словах то:

    static - можно применять во включаемых файлах (include), область видимости этой переменной будет ограничена файлом, т.е. если в моде объявить переменную с таким же именем что и в файле, то при компиляции, не будет ошибки в виде:
    error 021: symbol already defined:

    const - (лат. constanta — постоянная, неизменная) позволяет создавать переменные, значение которых в дальнейшем нельзя изменить.

    static const - тоже что и просто const, но опять же, позволяет ограничить область видимости в пределах файла, и избежать появления предупреждения:
    warning 201: redefinition of constant/macro

    stock - если переменная обозначена как stock, то при компиляции, если переменная не используется, она будет проигнорирована компилятором, в следствии чего не появится предупреждение вида:
    warning 203: symbol is never used:
    Последний раз редактировалось NewGreen; 06.07.2015 в 14:18.

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Сообщений
    12
    Репутация:
    0 ±
    Т.е. мне продолжать использовать new?

  4. #4
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от ...dolphin:з Посмотреть сообщение
    Т.е. мне продолжать использовать new?
    Хм, думаю на этот вопрос, Вы должны сами для себя, ответить. Вы пишете алгоритм, и Вам решать что использовать в процессе его написания.
    К примеру, если Вы будете писать алгоритм нахождения площади поверхности сферы, в формуле нахождения которой используется число Пи.
    Число Пи - это математическая константа, поэтому его можно записать используя const. Ваша программа будет выглядеть так:

    PHP код:
    #include <a_samp>

    const FloatPi 3.141592;
    new 
    FloatS,r;

    main()
    {
        
    10;
        
    4*Pi*(r*r);
        
    printf("S = %f",S);
        return 
    1;

    Последний раз редактировалось NewGreen; 06.07.2015 в 15:05.

  5. 2 пользователя(ей) сказали cпасибо:
    $continue$ (06.07.2015) Aurelius (27.02.2020)
  6. #5
    Аватар для Bady
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±

    static и const

    Хотел бы узнать подробную информацию о static и const, в каких случаях их нужно использовать и как правильно, ну и если можно пару примеров.
    Как я понял const придерживается одного заданного значения, и его изменить нельзя.
    Последний раз редактировалось Bady; 15.09.2015 в 15:54.

  7. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    const - это константа, значение которой вы устанавливаете сами и оно не измениться не при каких условиях.
    static - это объявление переменных и массивов (и т.д.), видимость которых ограничено файлом, где вы создаете их.



    PHP код:
    const UNTITLED 5
    И значение этой константы будет навеки равным пяти, аналогичная ситуация с #define
    PHP код:
    #define UNTITLED (5) 



    Например в файле odmenki_vsem.INC создали массив

    PHP код:
    static over_adm_level[MAX_PLAYERS]; 
    Потом вы подключили инклюд(где у нас находится массив) и к примеру создали массив в самом .pwn файле с точно таким же именем. Но конфликта имен не будет, потому что static массив виден только в файле, в котором мы его и создали. С ними работается так же как и с обычными переменным, созданными через new

    Вроде так ;)

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Думаю, целесообразно будет объединить эту тему с другой. Одну секунду...

    EDIT: Готово.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    08.12.2013
    Сообщений
    170
    Репутация:
    3 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    const - это константа, значение которой вы устанавливаете сами и оно не измениться не при каких условиях.
    static - это объявление переменных и массивов (и т.д.), видимость которых ограничено файлом, где вы создаете их.



    PHP код:
    const UNTITLED 5
    И значение этой константы будет навеки равным пяти, аналогичная ситуация с #define
    PHP код:
    #define UNTITLED (5) 



    Например в файле odmenki_vsem.INC создали массив

    PHP код:
    static over_adm_level[MAX_PLAYERS]; 
    Потом вы подключили инклюд(где у нас находится массив) и к примеру создали массив в самом .pwn файле с точно таким же именем. Но конфликта имен не будет, потому что static массив виден только в файле, в котором мы его и создали. С ними работается так же как и с обычными переменным, созданными через new

    Вроде так ;)
    Не совсем понял насчет const то есть вместо new можно использовать const, или как?

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Видимость переменных в pawn!? Что-то новенькое...

  11. 2 пользователя(ей) сказали cпасибо:
    Nurick (15.09.2015) Unreal (15.09.2015)
  12. #10
    Аватар для Nurick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.04.2014
    Адрес
    Уфа, Россия
    Сообщений
    319
    Репутация:
    52 ±
    PHP код:
    const 
    Объявляет переменную, которая не может быть изменена кодом.

    PHP код:
    static 
    Статическая переменная является глобальной переменной, но с более ограниченной областью применения. При использовании static на глобальном уровне в результате чего создаются переменные ограничиваются только тот раздел в котором они были созданы .

 

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

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

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

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

Ваши права

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