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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±

    Оператор tagof

    Привет!

    В этом уроке я попытаюсь объяснить вам работу оператора tagof. Удивительно, но копаясь на форуме, не заметил ни одной статьи посвященный данному оператору.

    Перед тем как начать изучать работу данного оператора давайте разберёмся, для чего он нужен и где его использовать?
    Дело в том, что частота использования данного оператора в библиотеках выше, чем в скриптах. Это обуславливается тем, что он необходим только для определения тега у константы, переменной или функции. Поэтому вы вряд ли встретите его в каком-либо скрипте/моде.

    Влияет ли он на скорость?
    Он вычисляется на этапе компиляции. Таким образом, можно утверждать, что код не может быть медленнее или быстрее из-за константного числа.

    Как же использовать данный оператор?
    Оператор прост в использовании. Например, для определения идентификатор тега, после названия тега необходимо указать двоеточие. Для функций, переменных, констант ничего указывать не надо.

    Давайте рассмотрим пример:
    PHP код:
    stock SomeFunction({bool,_}:var1tag tagof(var1))
    {
         if (
    tagof(bool:) == tag) {
               print(
    "boolean");
         } else if(
    tagof(_:) == tag) {
               print(
    "int");
         } else {

         }

    Таким образом, при вызове функции, например, со значением и тегом bool, нам выведет сообщение "boolean". Если же мы укажем, например, цифру или переменную без тега, то получим сообщение "int".

    Существуют ли баги?
    К сожалению, баги есть и они не исправлены в версии 3.x (Thanks Kalcor).

    На данный момент, я знаю лишь два бага связанных с данным оператором:
    • При указании tagof в метке конструкции switch будет ошибка.
      PHP код:
      // Ошибочный код.
      switch (...)
      {
           case 
      tagof(var1):
           {}

      Для того чтобы избежать данную ошибку необходимо обособить данный оператор круглыми скобками:
      PHP код:
      // Правильный код.
      switch (...)
      {
           case (
      tagof(var1)):
           {}

      Примечание: в версиях 4.x это было исправлено (другие исправления новых версий)
    • Ошибка при указании оператора tagof без круглых скобок.
      Очень странно, но при использовании оператора sizeof такой проблемы не наблюдается:
      PHP код:
      new size sizeof array; 

    Автор: VVWVV
    Исключительно для pro-pawn.ru

    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось VVWVV; 30.12.2016 в 03:45.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Хорошая статья! Всяко лучше, чем искать подобное описание в огромном .pdf на английском)
    Для пваров, кстати, подобное выполняет функция GetPVarType, можно как интересные сноски добавить (хотя, наверное, немного не по теме самого оператора будет).

    Кстати, небольшая помарочка: "другие исправления новых версий"
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  3. #3
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Кстати, небольшая помарочка: "другие исправления новых версий"
    Исправил.

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  5. #5
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Оу... Вот что значит не пользоваться поиском (это я про себя)

    UPD: Lol, я даже там что-то комментировал.
    Последний раз редактировалось VVWVV; 30.12.2016 в 05:41.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Вряд ли кто-то, кто будет искать информацию именно о tagof, сможет наткнуться на статью Кортеза, если не будет пользоваться поиском и открывать все темы, что выдаст его запрос. Так что, думаю, эта тема имеет место быть
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  7. #7
    Аватар для middlematt
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.01.2016
    Сообщений
    40
    Репутация:
    7 ±
    Понятнее тут, чем в этой теме.

    Храни тебя господь. c:

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

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Может мне, деревенщине, кто то объяснит зачем годноту выкладывать на форум где сидят "профессионалы" (никогда кавычки зря не ставлю, это принцип)? Все таки может добавить менее эксклюзивности твоим урокам?

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    О, а можно ведь с её помощью годный SendMessageFormated написать?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    О, а можно ведь с её помощью годный SendMessageFormated написать?
    Каков в твоём понимании "годный" SendFormatMessage? Если не крашащий сервер, то можно и без этого оператора написать (сделать форматирование по типу функции SetTimerEx, где указывается форматирование данных по типу "ssddffii"), но это всё будет очень медленно и костыльно, в отличии от format+SendClientMessage
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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