You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import haxe.macro.Expr;
using haxe.macro.ExprTools;
using haxe.macro.MacroStringTools;
class Main {
static function processDestructuring(e:Expr) {
return switch e {
case macro [$a{lefts}] = [$a{rights}]:
var cnt = 0;
var blocks = [ for (left in lefts) {
var valueLeft = left.toString();
var right = rights[cnt];
cnt++;
macro var $valueLeft = $e{right};
}];
macro $b{blocks};
case macro [$a{lefts}] << ${right}: {
var cnt = 0;
var blocks = [ for (left in lefts) {
var valueLeft = left.toString();
cnt++;
macro var $valueLeft = $right.$valueLeft;
}];
macro $b{blocks};
}
case _:e.map(processDestructuring);
}
}
public static macro function testDestructuring(e:Expr) {
return e.map(processDestructuring);
}
public static function main() {
testDestructuring({
var x = 1;
var y = 2;
var z = 3;
var person = {name:'mario',surname:'rossi',age:25};
trace(person);
[name,surname] << person;
[a,b,c] = [x,y,z];
});
}
}
and the code generated for js
(function (console) { "use strict";
var HxOverrides = function() { };
HxOverrides.iter = function(a) {
return { cur : 0, arr : a, hasNext : function() {
return this.cur < this.arr.length;
}, next : function() {
return this.arr[this.cur++];
}};
};
var Main = function() { };
Main.main = function() {
var x = 1;
var y = 2;
var z = 3;
var person = { name : "mario", surname : "rossi", age : 25};
console.log(person);
var name = person.name;
var surname = person.surname;
var a = x;
var b = y;
var c = z;
};
Main.main();
})(typeof console != "undefined" ? console : {log:function(){}});
What you think about assignment destructuring in tink_lang?
for arrays for example
and object destructuring
The text was updated successfully, but these errors were encountered: