const o = {p: 42, q: true};
const {p, q} = o;
# destructuring assignment works for sequences, including nested ones:
(a, (b, c), *d) = (1, (2, 3), 4, 5, 6) # result: a=1, b=2, c=3, d=(4,5,6)
# it is NOT implemented for more complicated types like dictionaries:
{"a": a} = {"a": 1} # ERROR
# more complex destructuring is possible using the match statement:
d = {"a": {"b": [1, 2]}}
match d:
case {"a": {"b": [1, x]}}: pass # result: x=2
case _: raise ValueError("destructuring failed!")
type person = {name: string, age: int};
let somePerson = {name: "Guy", age: 30};
let {name, age} = somePerson;
{"list": [0] + rest} = {"list": [0, 1, 2, 3]}
let add = fn ((a,b)) a + b
let tuplify = fn (a,b) (a,b)
return add(tuplify(1,2)) # 3
Languages with Destructuring include JavaScript, Python, Reason, Coconut, bog, Bio
Languages without Destructuring include Lil
View all concepts with or missing a hasDestructuring measurement
Read more about Destructuring on the web: 1.