访问被解构的项目
Access item that is destructured
在 ClojureScript 中,可以将要解构的原始项目存储在单独的值中。例如,当使用映射 {:a "A" :b "B" :c 3 :d 4}
调用下面的匿名函数时,键 a
和 b
被解构,原始映射使用 :as
存储在 m
中运算符。
((fn [{:keys [a b] :as m}]
(println "a is" a)
(println "b is" b)
(println "m is" m))
{:a "A" :b "B" :c 3 :d 4})
;; => a is A
;; b is B
;; m is {:a "A" :b "B" :c 3 :d 4}
;; nil
ECMAScript 中是否有类似的操作?例如,
(({ a, b }) => {
console.log(`a = ${a}`);
console.log(`b = ${b}`);
console.log(`m = ${???}`);
})({ a: "A", b: "B", c: 3, d: 4 });
或者是否需要先将原始项存储在变量中,然后再解构?
((m) => {
const { a, b } = m;
console.log(`a is ${a}`);
console.log(`b is ${b}`);
console.log(`m is ${m}`);
})({ a: "A", b: "B", c: 3, d: 4 });
;; => a is A
;; b is B
;; m is [Object object]
如果要访问原始参数,则应将其解构为函数体中的变量:
(m) => {
const { a, b } = m;
...
}
即使未访问,这种样式也是有益的,因为它允许在出现问题时调试参数,尤其是在 arguments
不可用的本机箭头函数中。
在 ClojureScript 中,可以将要解构的原始项目存储在单独的值中。例如,当使用映射 {:a "A" :b "B" :c 3 :d 4}
调用下面的匿名函数时,键 a
和 b
被解构,原始映射使用 :as
存储在 m
中运算符。
((fn [{:keys [a b] :as m}]
(println "a is" a)
(println "b is" b)
(println "m is" m))
{:a "A" :b "B" :c 3 :d 4})
;; => a is A
;; b is B
;; m is {:a "A" :b "B" :c 3 :d 4}
;; nil
ECMAScript 中是否有类似的操作?例如,
(({ a, b }) => {
console.log(`a = ${a}`);
console.log(`b = ${b}`);
console.log(`m = ${???}`);
})({ a: "A", b: "B", c: 3, d: 4 });
或者是否需要先将原始项存储在变量中,然后再解构?
((m) => {
const { a, b } = m;
console.log(`a is ${a}`);
console.log(`b is ${b}`);
console.log(`m is ${m}`);
})({ a: "A", b: "B", c: 3, d: 4 });
;; => a is A
;; b is B
;; m is [Object object]
如果要访问原始参数,则应将其解构为函数体中的变量:
(m) => {
const { a, b } = m;
...
}
即使未访问,这种样式也是有益的,因为它允许在出现问题时调试参数,尤其是在 arguments
不可用的本机箭头函数中。