hxslam
Short lambda library for Haxe.
Install
- Install with
haxelib install hxslam
. - Set in your
hxml
project file-lib hxslam
. - Use short lambda sugar in your project!
Manual mode:
Library supported manual mode. For activating manual mode, use in your
hxml
project file-D slamManulMode
. Then mark all classes where will be used short lambda by@:slam
metadata.
Usage
- Function without arguments:
function() return "Hello world!"; // haxe
(_) => "Hello world"; // hxslam
Use underscore in parenthesis when function has no arguments.
- Function with single argument:
function(a) return a; // haxe
(a) => a; // hxslam
- Function with arguments:
function(a, b, c) return a + b + c; // haxe
([a, b, c]) => a + b + c; // hxslam
Use square brackets for arguments.
Typed arguments:
Library also support typed arguments except for anonymous structures.
- Simple type:
function(a:String) return a; // haxe
(a(String)) => a; // hxslam
function(a:String, b:MyType) return b.someMethod(a); // haxe
([a(String), b(MyType)]) => b.someMethod(a); // hxslam
- Generics:
function(a:Array<String>) return a[0] + a[1]; // haxe
(a(Array(String))) => a[0] + a[1]; // hxslam
function(a:MyGeneric<Int, String>) return a.toString(); // haxe
(a(MyGeneric(Int, String))) => a.toString(); // hxslam
- Function type:
function(f:String -> Int -> Float) return f("Haxe", "3.3.0"); // haxe
(f(String > Int > Float)) => f("Haxe", "3.3.0"); // hxslam
function(f:Array<String> -> MyGeneric<Int, String>) return f("Haxe"); // haxe
(f(Array(String) > MyGeneric(Int, String))) => f("Haxe"); // hxslam
function(f:(Void -> String) -> String) return f(function() return "Haxe"); // haxe
(f((Void > String) > String)) => f((_) => "Haxe"); // hxslam
- Default values for function arguments:
function(a:String = "empty") return a; // haxe
(a(String) = "empty") => a; // hxslam
function(a = 1024) return a; // haxe
(a = 1024) => a; // hxslam
function(a:String, b:Int = 1024) return a + b; // haxe
([a(String), b(Int) = 1024]) => a + b; // hxslam
- Optional arguments in functions and function types:
function(?a:String) return a; // haxe
(-a(String)) => a; // hxslam
function(a:String = "Haxe", ?b:Int) return a + b; // haxe
([a(String) = "Haxe", -b(Int)]) => a + b; // hxslam
function(f:String -> ?Int -> String) return f("Haxe"); // haxe
(f(String > -Int -> String)) => f("Haxe"); // hxslam