Crie um conjunto de funções anônimas com parâmetros definidos no momento definitivo
Estou tentando refatorar gradualmente o código existente. Eu tenho um conjunto de funções que são definidas e diferem apenas por um dos argumentos internos:
function loadGame1():void
{
loadGame("save1");
}
function loadGame2():void
{
loadGame("save2");
}
function loadGame3():void
{
loadGame("save3");
}
//... snip many, many lines
// Note- I cannot pass function arguments at this time!
picker(loadGame1, loadGame2, loadGame3 ...);
Estou tentando refatorar pelo menosparte disso (eu não posso substituir completamente a coisa toda ainda, muitas interdependências).
Basicamente, eu quero ser capaz de gerar um grande conjunto de funções com a diferença entre as funções sendo um parâmetro interno:
var fNames:Array = new Array("save1", "save2", "save3");
var funcs:Array = new Array();
for (var i = 0; i < fNames.length; i += 1)
{
trace("Creating function with indice = ", i);
funcs.push(
function() : void
{
saveGame(fNames[i]);
}
)
}
picker(funcs[0], funcs[1], funcs[2] ...);
No entanto, pelo que entendi, o fechamento está causando o estado dei
para ser mantido além do escopo do loop for, e qualquer tentativa de chamar qualquer uma das funções geradas está falhando com um erro fora dos limites, que é o que você esperaria dado quei
atingiráfNames.size + 1
antesi < fNames.size
avalia para falso.
Então, basicamente, dado que eu preciso gerar funções que são passadas como argumentos para uma função pré-existente que não posso alterar atualmente. Como posso gerar dinamicamente essas funções?