问题标签 [destructuring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

javascript - 解构返回未定义的变量

我正在尝试 ES6 的新解构特性,但在理解它或让它工作时遇到了一些麻烦。

我希望在控制台中看到,"asd"function() { ... }我得到undefined了两者。

使用火狐 28.0

0 投票
1 回答
151 浏览

clojure - 解构:这怎么可能起作用?

作为对 SO 问题的回答,我正在构建一个循环函数,并构建了我迄今为止最复杂的解构,它奇迹般地起作用:

但我不知道为什么它应该工作。中r使用的recur是一个集合,这会使原始函数失败。

我想在apply recur那里使用类似的东西,但由于recur是一种特殊形式,这是不可能的。所以我尝试不使用它并且它有效。是否recur具有神奇的自动应用属性,或者还有其他我没有看到的东西。

0 投票
1 回答
3490 浏览

scala - 我可以将 Scala 列表解构(模式提取)成重用的 var 吗?

我有一个 Scala 列表。我可以将列表解构为一些变量:

但是,我似乎无法将相同的变量重用于另一个解构:

编译器告诉我它需要一个分号,但找到一个等号。为什么是这样?解构时不能使用已经声明的变量吗?我在做傻事吗?

0 投票
2 回答
443 浏览

macros - let forms : 如何访问宏中的解构符号?

我正在尝试编写一个宏,该宏扩展为具有解构的 let 形式。我的问题是我想拥有以 let 形式定义的符号列表,包括通过解构获得的符号列表。

用例

我试图排除这种行为,例如验证:

建议的解决方案

通过某种and-let我可以这样调用的宏来实现这一点真的很好:

我错过了什么

但是我缺少某种访问以 let 形式绑定的符号列表的方法。如果我有类似list-bound-symbols函数的东西,我可以这样做:

有没有人知道我该怎么做?

0 投票
3 回答
138 浏览

map - 存储解构映射以供以后使用

我一直试图让它与引用、引用拼接、评估以及我能想到的任何其他东西一起使用,但到目前为止还没有运气。我理解为什么它不起作用 - 它被视为一张地图,它正在尝试评估a,bc- 只是不知道如何绕过它。

我有一个相当复杂的解构地图,我正在考虑多次使用它,所以把它藏在某个地方似乎是个好主意。也许有更好的方法来解决它?

0 投票
1 回答
806 浏览

emacs - 是否有 emacs lisp splat 运算符或执行此类操作的其他方式?

我有一个对变量列表进行操作的运算符,如下所示:

我需要选择(取决于我们将调用的布尔变量my_bool)向此列表添加一个额外的参数,以便函数调用如下所示:

我的第一个想法是用这样的 if 块来做到这一点:

但这将导致 nil if myboolis equal to nilwhich is not allowed by the function syntax。

我的第二个想法是,也许我们可以过滤列表中的 nil 并将其删除,但我们无法这样做,因为首先出现的是 nil (或者我想不出办法,我很乐意被证明是错误的,只是在寻找解决方案)。

我的第三个想法是,如果我们有一个像 rubies 这样的 splat 运算符,我们可以过滤然后 splat 并且所有内容都会被整理出来,就像这样:

但我一直无法找到一个 splat 运算符(从技术上讲是一个列表解构运算符)(PS 上面的代码是近似的,因为它是一个不起作用的解决方案,所以我确定在那里。

所以我的问题是如何有选择地向函数调用添加单个参数,并且如果我们不这样做,则不产生 nil 作为该参数。

在此先感谢,对不起我的菜鸟 emacs lisp 技能:(。

0 投票
0 回答
43 浏览

r - 为什么我不能使用 mapply/assign 分配给多个变量?

(作为练习)我试图通过分配给 R 中的多个变量来模拟一些语言,例如 perl 等。

现在 $a 是 1,$b 是 2,$c 是 3。

我希望这会起作用:

但它只是返回了一个名为 1,2,3 的 int 向量。

为什么这没有按预期工作?

编辑:我的问题的第一部分确实是重复的:在 R 中的一行中在 LHS 上分配多个新变量,但仍然想知道为什么我的 mapply/assign 方法不起作用。

0 投票
1 回答
59 浏览

map - 在嵌套哈希图中创建多个相同深度值的集合

这是一个名为 args 的假设 hashmap:

我的目标是收集每个 :status 键的值。它们都处于相同的深度,是 :milestones 的子级。

我越来越近了。我知道如何通过这样做来检索第一个状态的值:

最远的目标是找出哪些地图包含一个值为 1 的 :status 并为每个单独的地图创建一个新集合。

其实际应用是连接到 TeamworkPM 并使用 Google 日历同步具有“迟到”或“未完成”状态的里程碑。

在这种情况下,所需的输出将是 {1, 2, 1}。最终目标是拥有

0 投票
1 回答
5035 浏览

clojure - Clojure:“java.lang.IllegalArgumentException:没有为键提供值:”当我更改要求时

我的java.lang.IllegalArgumentException: No value supplied for key:Clojure 代码中有一个。

我知道当我试图解构作为参数传递的映射中的键时会发生这种情况。

然而,这里奇怪的是,这个函数多年来一直运行良好,数据相同。唯一似乎不同的是我现在如何导入函数

这是错误:

这是抛出它的函数。

换句话说,我要求地图包含名为styleand的键,并且给它一个包含名为andpoints的键的地图。stylepoints

这段代码几个月来一直运行良好。

不同之处在于我现在使用sshapes/scalewheresshapes被导入的地方来调用它:

而以前我只是将其称为scalescale 进入命名空间的地方

这会导致那种错误吗?

0 投票
1 回答
27769 浏览

python - Python赋值解构

这三个表达式似乎是等价的:

它们编译成相同的代码吗?

哪个更pythonic?