spider icon indicating copy to clipboard operation
spider copied to clipboard

More powerful destructuring

Open nmn opened this issue 11 years ago • 3 comments

Spider already supports:

var [a, b] = [1, 2];
[a, ,b] = [1, 2, 3];
[a, b] = [b, a];

Spider also supports splats ...rest.

Spider should support the following (It may support some of these already):

var {a, b} = {a: 1, b: 2};
var {first: a, last: b} = {first: 1, last: 2};
var [a, b, ...rest] = [1, 2, 3, 4, 5];
var {a, b, ...rest} = {a: 1, b: 2, c: 3, d: 4}; // rest = {c:3, d:4}

Also in function parameters:

fn obj({x, y, z}, color){...}

// which is called like this:
obj({x: 1, y: 2, z: 3}, 'blue');

This would all be extremely useful in a lot of places, and are features that libraries like React will soon depend on. Most of these features are part of ES6. the ...rest in an object is not, but it is a proposal. JSX will be adding support for it anyway.

nmn avatar Dec 01 '14 20:12 nmn

Spider already supports:

var {a, b} = {a: 1, b: 2};
var {first: a, last: b} = {first: 1, last: 2};

alongubkin avatar Dec 01 '14 20:12 alongubkin

I suspected as much. So at the moment, Spider supports destructuring to the same level as ES6.

rest operator in objects, and destructuring in function params would be great. If however, you don't want to get ahead of ES6, that's a different matter.

nmn avatar Dec 02 '14 00:12 nmn

+1

Destructuring should be allowed in all of these, too. I'm not sure which of these are already supported:

fn f([x, y]) { ... }
for [x, y] in [[0, 1], [2, 3], ...] { ... }
[ ... for [x, y] in [[0, 1], [2, 3], ...] ]

michaelstephendavies avatar Dec 02 '14 20:12 michaelstephendavies