Почему нелзья задать параметр по умолчание функции
private function name takes integer parameter = 5 returns nothing
endfunction
где parameter если не задано значение то по умолчание брать 5, это пример кода.
Принятый ответ
Перегрузка макросов
Определение в пределах одной области видимости нескольких макросов с одинаковыми именами не вызовет ошибки, если они отличаются количеством принимаемых аргументов. Такие макросы называются перегружеными. В зависимости от количества переданных при вызове аргументов, будет вызван тот или иной из перегруженных макросов.
define {
msg(text) = DisplayTextToPlayer(GetLocalPlayer(), text, 0, 0)
msg(text,playerid) = DisplayTextToPlayer(Player(playerid), text, 0, 0)
msg(text,playerid,x,y) = DisplayTextToPlayer(Player(playerid), text, x, y)
}
nothing test() {
msg("test 1")
msg("test 2", 1)
msg("test 3", 2, 0.1, 0.1)
}
будет транслировано в следующее:
function test takes nothing returns nothing
call DisplayTextToPlayer(GetLocalPlayer(), "test 1", 0, 0)
call DisplayTextToPlayer(Player(1), "test 2", 0, 0)
call DisplayTextToPlayer(Player(2), "test 3", 0.1, 0.1)
endfunction
Внимание! Если в перегруженной группе есть макрос, не принимающий аргументов, его все равно необходимо записывать с указанием пустых скобок после него.
а так jass писался очень давно
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Функция может возвращать константное значение (частенько юзается в картах близзардов).
ledoed:
но в c++ значение параметра по умолчанию есть а в jass нету
ибо как я уже писал