- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
["foo", 1, "bar", 2] Ha-6ren">
我正在学习 Ruby 的基础知识(刚刚开始),我遇到了 Hash.[]
method .它被引入
a = ["foo", 1, "bar", 2]
=> ["foo", 1, "bar", 2]
Hash[*a]
=> {"foo"=>1, "bar"=>2}
稍加思索,我发现 Hash[*a]
等同于 Hash.[](*a)
或 Hash.[] *一个
。我的问题是为什么会这样。是什么让您将 *a
放在方括号内,是否有某种规则可以在何时何地使用“it”?
编辑:我的措辞似乎造成了一些困惑。我不是在问数组扩展。我明白了。我的问题基本上是:如果 []
是方法名称,为什么可以将参数放在括号内?这看起来几乎——但不完全是——就像说如果你有一个方法 Foo.dood
,并且你想将字符串 "hey"
传递给它,那么你可以写成 Foo.do"hey"od
。
最佳答案
Hash["a", "b", "c", "d"]
等同于 Hash.[]("a", "b", "c", "d")
。 Ruby 中几乎所有的东西都是方法调用。 5 + 5
等同于 5.+(5)
。
给定 a = ["a", "b", "c", "d"]
Hash[*a]
等价于 Hash[ "a", "b", "c", "d"]
,这又等同于 Hash.[]("a", "b", "c", "d")
。类似地,foo(*a)
等同于 foo("a", "b", "c", "d")
这称为爆炸运算符,并且允许将数组发送到方法并将数组中的每个项目计为方法的一个参数,而不是将数组作为第一个参数发送到方法。
为了专门回答您的更新,没有什么特别的可以让您将 *a
放在括号内。方括号只是普通方法调用的糖分。这里唯一“特别”的地方是您可以将 *a
发送到任何方法。
关于ruby - Ruby 语法糖有 "rules"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705693/
对于NumericVector ,我可以将一个较小的 NumericVector 进行子集化通过使用 IntegerVector包含要子集化的位置。 例如假设x<-c(1,2,2,3,4,5) , i
我的 javascript 文件以配置开始... require.config({ baseUrl: 'scripts', paths: { 'code-mirror'
我的应用程序应该可以使用插件或通常称为糖的方式进行扩展。我会将它们放在 appname.app/Contents/sugars/sugarname.appnamesugar 下 这些是 bundle
我一直在尝试使用 Rcpp 在 C++ 中获取 vector 的等级。我使用了其他糖功能,例如 is_na(); C++中rank R函数有没有类似的糖函数。 Rcpp/ 中是否还有任何可用的 R 糖
我通过 Android Studio 使用 Sugar ORM 进行 Android 开发。 但我想我有一个非常相似的问题。如何将一个/多个结果查询显示为字符串或整数?我的实体看起来像这样: publ
入门读物: Prototypes as "classes" OO JS 按照上述模式,我创建如下库/API var Proto = { constructor: function () {
我在应用程序的第一个版本中使用了 SugarORM。现在,我正在开发第二个版本,它向数据库中添加了新表。 根据 SugarORM documentation “Sugar 会自动为新实体创建表,因此您
我是一名优秀的程序员,十分优秀!