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

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

Ответ
 
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
префикс функции
Когда я ставлю триггер с функцией выше или ниже триггера, из которого эта функция вызывается у меня выдает ошибку "undeclared function". Есть ли префикс для функции (наподобие private), который при компиляции поставит нужную мне функцию выше всех остальных функций?
Старый 08.10.2012, 07:50
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
library B needs A
    void SomeFunc2(){
       someFunc()
}
endlibrary

library A
    void someFunc() {}
endlibrary
вообще это описано в мануале вЖасса
Hate добавил:
область видимости в jass направлена вверх, поэтому нужно функции которые вызываются ставить выше, обрамка либрари переносит код выше даже чем в шапке карты, и изза метки needs оно ставит зависимую библиотеку выше той которая нуждается
Старый 08.10.2012, 08:00
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
Hate:
вообще это описано в мануале вЖасса
этот мануал я перечитывал 5 раз, перенесли бы его в статьи, да привели бы в нормальный вид.
Hate:
область видимости в jass направлена вверх, поэтому нужно функции которые вызываются ставить выше
я знаю.
мне не нужны бесполезные библиотеки, я знаю что это такое.
просто спрашиваю, есть ли возможность ставить функцию в любой триггер из списке триггеров (левая колонка в редакторе триггеров) в любом месте этого списка, но при этом чтобы она переносилась вверх при компиляции? Просто неохота все функции, которые часто вызывются переносить в корень триггеров.
Старый 08.10.2012, 14:48
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,288
Активность:
Temak1, прямым способом без jngp нет, только если ты будеш использовать библиотеки, а если не хочеш то сначала все в кастом скрипт карты перенеси...
Еще есть такая штука как textmacro и define. там вроде можно засунуть функцию вплоть до раздела main... но опять же jngp
Старый 08.10.2012, 14:52
adic3x

offline
Опыт: 108,439
Активность:
Правильный ответ прозвучал во втором посте.
мне не нужны бесполезные библиотеки
Почему они бесполезные? Ведь мало того, что они решают проблему с расположением функций в коде, они еще и провоцируют программиста писать более правильный код.
quq_CCCP, надо попросить разработчиков сделать специальную настройку, которая запретили бы Вам писать в jass разделе: количество неправильных ответов от Вас превышает все разумные пределы.
Старый 08.10.2012, 15:25
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
ADOLF, Прототипирование запили в сджас что ли
(вроде бы так называется что то типа этого:
void func1(int a){}

void func2(){func1(1)}

void func1(int a){BJDebugMsg(I2S(a))}
)
Старый 08.10.2012, 15:32
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
quq_CCCP:
то сначала все в кастом скрипт карты перенеси...
зачем кастом скрипт? я только на jass пишу.
Clamp,
2 функции с одниковым именем? и это сработает?
Старый 08.10.2012, 18:48
DioD

offline
Опыт: 45,134
Активность:
в цджаз вроде как работает если сигнатура разная, нативно данная опция не поддерживается.
Старый 08.10.2012, 18:51
ScorpioT1000
Работаем
offline
Опыт: отключен
делайте статик функции будет вам добро
global.foo(123)

//...

struct global


static function foo takes integer returns string

endfunction

static function bar takes integer returns string

endfunction


endstruct
Старый 08.10.2012, 18:59
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Temak1:
Когда я ставлю триггер с функцией выше или ниже триггера, из которого эта функция вызывается у меня выдает ошибку "undeclared function". Есть ли префикс для функции (наподобие private), который при компиляции поставит нужную мне функцию выше всех остальных функций?
ExecuteFunc тебе в помощь. Если нужно передавать аргументы, юзай глобалки.
раз уж ты не хочешь писать код как нормальные люди.
Старый 08.10.2012, 19:57
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
Faion, я хочу, но не понимаю :(
Старый 08.10.2012, 22:31
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Temak1:
Faion, я хочу, но не понимаю :(
когда то вы и русский язык не понимали, флаг желание вам в руки
Старый 08.10.2012, 22:33
adic3x

offline
Опыт: 108,439
Активность:
в цджаз вроде как работает если сигнатура разная, нативно данная опция не поддерживается.
Не работает - я так и не сделал определение типов выражений парсером для ООП синтаксиса вЖасса, а без этого узнать сигнатуру функции невозможно.
Возможно, Вы путаете перегрузку макросов в cJass - это действительно имеет место быть, там можно задавать макросы с разным количеством аргументов, и вызывать по имени, указывая соответствующее количество аргументов.
Старый 08.10.2012, 23:30
DioD

offline
Опыт: 45,134
Активность:
я путаю с явой, где это прекраснейшим образом работает, но ява ООП а вот джаз функциональный язык.
Старый 09.10.2012, 10:46
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
DioD:
а вот джаз функциональный язык.
jass - событийно-ориентированный язык -_-'
Старый 09.10.2012, 13:14
Doc

offline
Опыт: 63,163
Активность:
Faion:
jass - событийно-ориентированный язык -_-'
jass - очень печальный язык
Старый 09.10.2012, 16:11
DioD

offline
Опыт: 45,134
Активность:
он нифига не событийно ориентированный, чисто функциональный.
Старый 09.10.2012, 18:29
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
пруф?
Faion добавил:
хм, даже на вики написано что это СОП :nate:
Старый 09.10.2012, 19:13
Ответ

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

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

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

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



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