XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Интересно,как сделать функцию типа
function <Имя функции> takes nothing returns boolean
а именно,ту которая ничего не берёт,но возвращает что либо
ЗЫ:Может вопрос где-то был,тогда палками не бить,а просто дать ссылку
Старый 30.08.2009, 22:07
agentex

offline
Опыт: 34,534
Активность:
наверно как и в си?
Старый 30.08.2009, 23:02
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
наверно как и в си?
я с си не работал, хотя пора бы ^_^ вот и спрашиваю
Старый 30.08.2009, 23:17
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
<возвращаемый тип> <имя функции>(<список аргументов>) {
  // тело функции
}
то есть, если аргументов нету, то просто оставляешь пустые скобки. Для твоего случая:
boolean func_name() {
  ...
}
Старый 31.08.2009, 00:10
Elf_Stratigo

offline
Опыт: 4,599
Активность:
я плохо понимаю как работают макросы (не считаю их актуальными), но одно мне известно точно - с AdicHelper следующий код при сохранении создаёт ошибки:
» раскрыть
Код:
library Table initializer init
//***************************************************************
//* Table object
//* ------------
//*
//*   set t=Table.create() - instanceates a new table object
//*   call t.destroy()     - destroys it
//*   t[1234567]           - Get value for key 1234567
//*                          (zero if not assigned previously)
//*   set t[12341]=32      - Assigning it.
//*   call t.flush(12341)  - Flushes the stored value, so it
//*                          doesn't use any more memory
//*   t.exists(32)         - Was key 32 assigned? Notice
//*                          that flush() unassigns values.
//*   call t.reset()       - Flushes the whole contents of the
//*                          Table.
//*
//*   call t.destroy()     - Does reset() and also recycles the id.
//*
//*   If you use HandleTable instead of Table, it is the same
//* but it uses handles as keys, the same with StringTable.
//*
//***************************************************************

//=============================================================
    globals
        private constant integer MAX_INSTANCES=8100 //400000

    //=========================================================
        private gamecache gc
    endglobals

    private struct GTable[MAX_INSTANCES]
        method reset takes nothing returns nothing
            call FlushStoredMission(gc,I2S(this))
        endmethod

        private method onDestroy takes nothing returns nothing
            call FlushStoredMission(gc,I2S(this))
        endmethod
    endstruct

    //Hey: Don't instanciate other people's textmacros that you are not supposed to, thanks.
    //! textmacro Table__make takes name, type, key
    struct $name$ extends GTable
        integer i = 0

        method operator [] takes $type$ key returns integer
            return GetStoredInteger(gc,I2S(this),$key$)
        endmethod

        method operator []= takes $type$ key, integer value returns nothing
            call StoreInteger(gc,I2S(this),$key$, value)
        endmethod

        method flush takes $type$ key returns nothing
            call FlushStoredInteger(gc,I2S(this),$key$)
        endmethod

        method exists takes $type$ key returns boolean
            return HaveStoredInteger(gc,I2S(this),$key$)
        endmethod

    endstruct
    //! endtextmacro



    private function H2I takes handle h returns integer
        return h
        return 0
    endfunction
    
    //! runtextmacro Table__make("Table","integer","I2S(key)" )
    //! runtextmacro Table__make("StringTable","string","key" )
    //! runtextmacro Table__make("HandleTable","handle","I2S(H2I(key))" )

    //=============================================================
    // initialize it all.
    //
    private function init takes nothing returns nothing
        call FlushGameCache(InitGameCache("libtable.gc"))
        set gc=InitGameCache("libtable.gc")
    endfunction
endlibrary

причём жалуется как раз про операторы => их всё ещё недофиксли (скачал 01 03 04 02 по "old way" + несколько раз понажимал AHupdate.exe чтобы удостовериться что у меня последняя верса)
Старый 01.09.2009, 18:12
adic3x

offline
Опыт: 107,539
Активность:
Elf_Stratigo, спасибо, в чем бага я понял, насчет фикса подумаю...
тут дело не в операторах, а именно в макросах
Старый 01.09.2009, 18:31
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
ADOLF, размести changelog где-нибудь в меню cJass`а.
Старый 01.09.2009, 18:50
adic3x

offline
Опыт: 107,539
Активность:
FREEZE_ball, cjass.xgm.ru/history
ну мы его еще наверное в файл будем класть
Старый 02.09.2009, 10:30
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
ADOLF, как насчёт сделать макросы на нужные функции?
Код:
...
call SomeImboLongTitledFunctionWithFTWCountOfParameters(*UNIT*, *PLAYER*, *BOOLEAN*, *BOOLEXPR*, *HANDLE*, *WIDGET*, *TEXTTAG*)
                                    ...

в cJass`е на:
Код:
macrofunction Lol SomeImboLongTitledFunctionWithFTWCountOfParameters(!*UNIT*!, !*PLAYER*!, false, null, GetTriggerUnit(), null, CreateTextTag())
                                    ...
Lol(*UNIT*, *PLAYER*)
                                    ...
Старый 02.09.2009, 16:03
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
define lol(urUnit,urPlayer)=SomeImboLongTitledFunctionWithFTWCountOfParameters(urUnit,urPlayer,false,null,G​etTriggerUnit(),null,CreateTextTag())

//...
lol(myUnit,myPlayer)
Старый 02.09.2009, 16:06
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Hellfim, спасибо, а какой конечный синтаксис у дефайна? Он создаёт промежуточную функцию, или каждый раз вызывает исходную?
Создайте уже отдельную тему с вопросами по cJass`у, зачем оффтопить в обсуждении спелла?
Старый 02.09.2009, 16:10
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
FREEZE_ball, просто заменяет на то, что написано у тебя в объявлении, в данном случае да - каждый раз вызывает функцию.
Старый 02.09.2009, 16:39
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:42.