问题标签 [splat]

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 回答
908 浏览

ruby-on-rails - ActiveRecord 将所有子项移动到另一条记录

我有一张表,它与其他表有五种不同的多对多关系。在删除一条记录之前,我需要将其所有子项移动到另一条记录。为此,我使用以下代码:

基本上,这归结为target.child-association << self.child-association. 但这不能正常工作,从“self”中删除所有子项,并将一个子项添加到“target”,除关联字段 null 之外的所有字段。我认为这是因为“<<”需要一条记录,而我正在传递一组记录。我看到“<<”也接受参数列表,所以我认为我需要类似target.send(assoc.name) << *self.send(assoc. name)的东西(注意 splat 运算符),但我无法找出有效的语法来执行此操作。所以我的问题有两个:

  1. 你如何“splat”一个任意数组以输入“<<”?
  2. 这是使儿童重新分配正常工作所需要的吗?
0 投票
2 回答
3762 浏览

coffeescript - CoffeeScript:在函数调用中展开数组

在 Ruby 中,我可以调用使用数组元素作为位置参数的方法,如下所示

这里的“*”运算符将数组展开到位。

我正在尝试在 CoffeeScript 中做同样的事情,但还没有找到方法。具体来说,我想在调用 jQuery 函数时传递其他参数

显然,上面的语法不起作用,我正在寻找一种方法。

0 投票
4 回答
2239 浏览

ruby - 使用 splat 运算符通过引用块来传递参数

似乎在使用 splat 运算符通过引用将参数传递给块时,参数被复制了。

我有这个:

如何通过引用传递这些参数?如果我直接传递数组似乎可以工作,但是 splat 运算符在这里会更加实用、直观和可维护。

0 投票
1 回答
1292 浏览

ruby - 块变量中的括号

给定

1)我明白这一点

有两个变量(x, y)z,所以第三个元素:c被丢弃,并且z匹配:b。我明白这一点

(x, y)匹配,:a因为它不是一个数组,所以它没有元素,所以y匹配nil

但是怎么做

工作?我期待nil被退回。

2)为什么返回值是这样的?

我希望他们都回来nil

0 投票
2 回答
1946 浏览

ruby - Ruby to_s 转换为二进制(参数中的 Splat 运算符)

如果我运行以下代码,前两行将返回我所期望的。然而,第三个返回 2 的二进制表示。

我知道在调用时传入 2to_s会将我的输出转换为二进制,但是为什么在第三种情况下to_s忽略了呢?*如果这有什么不同,我正在运行 Ruby 1.9.2。

0 投票
2 回答
668 浏览

ruby - 为什么使用 Ruby splat 会引发错误?

我想允许用户将选项传递给可以是单个对象或数组的方法。下面的代码工作,假设 `opts[:variable_length_opt] 被定义:

但如果未设置该选项,我也希望能够设置默认值。但是这段代码不起作用:

它抛出一个unexpected tSTAR错误。我知道还有其他更冗长的方法来完成我所追求的,但我想知道是否还有其他简短的替代方法。另外,splat的限制是什么?我想不出一个很好的理由让它在这里不可用。

0 投票
5 回答
4723 浏览

ruby - 如何同时使用 splat 和可选哈希在 ruby​​ 中定义方法?

我能够定义这样的方法:

但这使得hash_params论证是强制性的。这些也不起作用:

有没有办法让它成为可选的?

0 投票
2 回答
255 浏览

ruby - 争吵位置

为什么这段代码

返回这个

我知道Array#flatten。但这是什么*意思?我如何查找有关它的信息?

0 投票
3 回答
2553 浏览

ruby - Ruby Koans 关于消息传递“发送”块和参数

我正在研究 Ruby Koans about_message_passing.rb 并获得了适用于 method_missing 的代码,如下所示:

这段代码似乎有效,但我不太明白为什么 *args 中需要 splat 并且块需要 & 。

如果我在定义一个方法,我知道 * 和 & 分别用于表示数组参数和块参数,但是当它们与 send 方法一起使用来调用对象上的方法时,这意味着什么?

0 投票
1 回答
943 浏览

ruby - *::(星号双冒号)在Ruby中做了什么?

我今天在浏览 Rails 代码时偶然发现了这个片段

星号双冒号(或 splat-双冒号,如果你愿意的话)有*::Date什么作用?

大概它与特别命名空间Date类的范围有关......但作者有必要包含它而不是仅仅使用标准Date类。