Установка значения по умолчанию для аргумента функции в actionscript 3 - PullRequest
6 голосов
/ 12 декабря 2008

Можно ли как-нибудь ссылаться на var или const в качестве значения по умолчанию для аргумента функции в actionscript 3.

Я могу определить значения по умолчанию, такие как null, string, int.

function a( b = null ) {
   blah...
}

Но то, что я хочу сделать, это

function a( b = function(){} ) {
    blah...
}

что, похоже, есть способ сделать. Предположительно через const

Ответы [ 3 ]

8 голосов
/ 13 декабря 2008

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

Лучшее, что я мог сделать, это:

public function myFunction(functionArgument:Function = null):void {
    if (functionArgument != null) {
        functionArgument();
    } else {
        defaultFunction();
    }
}

Как sidenote, я только что обнаружил, что вы на самом деле можете объявлять такие функции:

public static const STATICFUNC:Function = function():void { trace("i'm static!") };

Но, похоже, это работает так же, как объявлять их вменяемым образом, так что там тоже не повезло.

1 голос
/ 17 февраля 2009

Я согласен с грейпфрутом.

Но если вы хотите создавать новые объекты при каждом вызове, вы можете сделать это:

function myFunction(f:Function = null):void
{
    f = (f != null) ? f : function():void{ trace('new function'); }
}

или, конечно:

function myFunction(f:Function = null):void
{
    f = (f != null) ? f : defaultFunction; 
}

function defaultFunction():void
{
   trace('default function invoked')
}
1 голос
/ 17 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...