Create a set of anonymous functions with parameters defined at a specific time

I am trying to gradually reorganize existing code. I have a set of functions that are defined and differ only in one of the internal arguments:

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 ...);    

I am trying to reorganize at least part of this (I cannot completely replace all this, too many interdependencies).

Basically, I want to be able to generate a large set of functions with the difference between functions that are an internal parameter:

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] ...);

, , , i for, , , , i fNames.size + 1 , i < fNames.size false.

, , , , , . ?

+4
1

IIFE:

for (var i = 0; i < fNames.length; i += 1)
{
    (function(i){
        trace("Creating function with indice = ", i);
        funcs.push(
            function() : void 
            {
                saveGame(fNames[i]);
            }
        )
    })(i);
}
+4

All Articles