Overview
Create a new function based on an existing function but with some parameters pre-defined.For more info on currying, see Wikipedia.
Availability
Util.js v0.5 and above.
Syntax
// create new function based on existing one with one or more pre-defined arguments var fNew = fExisting.uCurry(cArgs); // use the new function optionally specifying additional arguments fNew(args);
Where fExisting is any existing function.
Parameters
Parameter | Type | Mandatory | Description | Util.js version |
---|---|---|---|---|
cArgs | One or more arguments | One or more arguments that will be passed in to fExisting when you access it via fNew | 0.5 |
Return value
Value | Type | Description | Util.js version |
---|---|---|---|
<fNew> | Function | A new function which will automatically set the cArgs arguments for fExisting and then append any additional arguments passed in to fNew. | 0.5 |
<fExisting> | Function | If you do not specify cArgs then the existing function will be returned. | 0.5 |
Example
Basic example - pre-defining "not" and "a" params of a "booler" function
function booler(not,a,b) { return (not) ? a!=b : a==b; } var isMe = booler.uCurry(false,me); // not == false, a = me isMe(7); // true if me == 7, false if me != 7 var isNotMe = booler.uCurry(true,me); isMe(7); // true if me != 7, false if me == 7
A better example is shown in Object.uAddProperty() example using a curried allianceExistsBetween() function.
See also
- uCompose – create a new function by merging two existing functions
- Curry – I based my uCurry function on code samples from this blog.