splat相关内容

*(星号)符号在函数参数附近有什么作用以及如何在其他情况下使用它?

我正在使用 Ruby on Rails 3,我想知道在函数参数附近存在 * 运算符意味着什么,并了解它在其他场景中的用法. 示例场景(此方法来自 Ruby on Rails 3 框架): def find(*args)返回到_a.find { |*block_args|yield(*block_args) } 如果 block_given?选项 = args.extract_options ..
发布时间:2022-01-21 22:18:55 其他开发

Haskell 有像 Python 和 Ruby 这样的 splat 运算符吗?

在 Python 和 Ruby 中(我敢肯定,还有其他的).您可以使用 * ("splat") 作为可枚举的前缀,以将其用作参数列表.例如,在 Python 中: >>>def foo(a,b): 返回 a + b>>>富(1,2)3>>>tup = (1,2)>>>富(*tup)3 Haskell 中有类似的东西吗?我认为由于它们的任意长度,它不适用于列表,但我觉得使用元组它应该可以工作.这 ..
发布时间:2022-01-20 08:09:56 其他开发

为什么 splatting 在 rhs 上创建一个元组,但在 lhs 上创建一个列表?

例如,考虑 squares = *map((2).__rpow__, range(5)),正方形# (0, 1, 4, 9, 16)*squares, = map((2).__rpow__, range(5))正方形# [0, 1, 4, 9, 16] 所以,在其他条件相同的情况下,我们会在左对齐时得到一个列表,在右轴上喷射时得到一个元组. 为什么? 这是设计使然,如果是,其基本原 ..
发布时间:2022-01-20 00:04:45 Python

Double-splat 运算符破坏性地修改哈希——这是 Ruby 错误吗?

我注意到我发现使用 Ruby 2.1.1 中的 **(双斜线)运算符有一个非常令人惊讶的行为. 在 **hash 之前使用键值对时,哈希保持不变;但是,当键值对仅在 **hash 之后使用时,哈希值会被永久修改. h = { b: 2 }{ a: 1, **h } # =>{ a: 1, b: 2 }h # =>{乙:2}{ a: 1, **h, c: 3 } # =>{ a: 1, b: ..
发布时间:2021-12-27 16:31:12 其他开发

Ruby 代码中的(一元)* 运算符有什么作用?

给定 Ruby 代码 line = "first_name=mickey;last_name=mouse;country=usa"record = Hash[*line.split(/=|;/)] 除了 * 运算符之外,我理解第二行中的所有内容 - 它在做什么,它的文档在哪里?(正如您可能猜到的,事实证明,搜索此案例很困难...) 解决方案 * 是 splat 运算符. 它将 A ..
发布时间:2021-12-03 09:32:08 其他开发

在哪里使用 ruby​​ splat 运算符是合法的?

Splats 很酷.它们不仅用于爆炸数组,尽管这很有趣.他们还可以转换为 Array 和展平数组(参见 http://github.com/mischa/splat/tree/master 获取他们所做工作的详尽列表.) 看起来无法对 splat 执行其他操作,但在 1.8.6/1.9 中,以下代码抛出“意外的 tSTAR": foo = bar ||*zap #=>意外的tSTAR ..
发布时间:2021-11-18 02:59:25 其他开发

有没有比模仿 splat 运算符更简单的替代方法?

我发现它在 Ruby 中可用,但我从我在 Python 中所做的工作中认出了它;“splat"运算符.长话短说,我想知道是否有一种更简单的方法来完成我目前的工作,模仿“splat"运算符的作用. 我创建了一个其他人可以调用的中心方法,因为我意识到我有几个非常相似的方法,除了一些小事情之外,它们都在做相同的事情.这是方法签名: private String callScript(String ..
发布时间:2021-11-17 05:41:16 Java开发

*(星号)符号在函数参数附近有什么作用以及如何在其他场景中使用它?

我正在使用 Ruby on Rails 3,我想知道在函数参数附近存在 * 运算符意味着什么,并了解它在其他场景中的用法. 示例场景(此方法来自 Ruby on Rails 3 框架): def find(*args)返回到_a.find { |*block_args|yield(*block_args) } 如果 block_given?选项 = args.extract_options ..
发布时间:2021-11-17 05:19:23 其他开发

ruby:当总和为 21 时添加数字并打印 true

这是 rubeque.com 上给出的一个简单问题:编写一个方法,该方法接受任意数量的整数并将它们相加,如果总和为 21,则返回 true.否则为 False.它测试输入: assert_equal_one?(3, 4, 5, 6, 3), trueassert_equal 二十一?(3, 11, 10), false 这是我目前所拥有的: def二十一?(*nums)nums.inject ..
发布时间:2021-09-01 18:59:33 其他开发

Ruby,Splat 的源代码?

昨天有人问了关于 splat 运算符的问题,我想看看源代码……是用 C 还是用 Ruby 编写的?在哪里可以找到? 解决方案 从 Ruby 2.4 开始,核心 Ruby 文档中对 splat 运算符的记录很差.不过,这是该语言的核心功能,可以在 rb_yield_splat(VALUE values). 对于 rb_yield_splat 更清楚地说明发生了什么: 它“产生传递数组 ..
发布时间:2021-07-11 20:59:12 其他开发

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

似乎是在使用 splat 运算符通过引用将参数传递给块时复制了参数. 我有这个: def 方法a = [1,2,3]产量(*a)pa结尾方法 {|x,y,z|z = 0}#=>这放置并返回 [1, 2, 3] (没有修改第三个参数) 如何通过引用传递这些参数?如果我直接传递数组似乎可以工作,但 splat 运算符在这里会更实用、直观和可维护. 解决方案 在 Ruby 中,当您 ..
发布时间:2021-07-11 20:06:07 其他开发

为什么这里的数组定义中使用了 splat?

def 初始化(应用程序,catch=404)@apps = [];@has_app = {}app.each { |app|添加应用}@catch = {}[*catch].each { |状态|@catch[状态] = 真 }结尾 在此方法中来自 Rack::Cascade,splat(*) 在 [*catch] 代码中的作用是什么? 我认为在方法参数中使用了 splat 来指示您何时 ..
发布时间:2021-07-11 19:50:42 其他开发

这在 Ruby 语言中是什么意思?

运行以下代码, a = [1, 2, 3, 4, 5]头,*尾=一个p头尾巴 你会得到结果 1[2, 3, 4, 5] 谁能帮我解释下语句head,*tail = a,谢谢! 解决方案 head, *tail = a 表示将数组的第一个元素 a 赋值给 head,并将其余元素分配给 tail. *,有时被称为“splat 操作符",对数组做了很多事情.当它位于赋值运算符 (= ..
发布时间:2021-07-11 19:50:24 其他开发

了解范围和数组中的 ruby​​ splat

我正在尝试理解 *(1..9) 和 [*1..9] 之间的区别 如果我将它们分配给变量,它们的工作方式相同 splat1 = *(1..9) # splat1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]splat2 = [*1..9] # splat2 = [1, 2, 3, 4, 5, 6, 7, 8, 9] 但是当我尝试直接使用 *(1..9) 和 [*1..9] 时, ..
发布时间:2021-07-11 19:48:10 其他开发

Ruby 中使用的独立 splat 运算符 (*) 是什么?

我刚刚遇到了这个例子,其中在方法定义中单独使用了 splat 运算符: def print_pair(a,b,*)放置“#{a} 和 #{b}"结尾打印对(1,2,3,:蛋糕,7)#=>1 和 2 很清楚你会在这样的上下文中使用它的内容和原因: def arguments_and_opts(*args, opts)放置“参数:#{args} 选项:#{opts}"结尾arguments_an ..
发布时间:2021-07-11 19:21:49 其他开发

Ruby 中的 *(星号)是什么意思?

可能的重复: Ruby 中的 * 运算符对这个字符串做了什么 可能在别处有答案,但我只是不知道如何找到它... 如果我是对的,如果在函数定义中使用 * 表示多个参数: def hero(name, *super_powers) 但是*在这样的代码中做了什么: Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatt ..
发布时间:2021-07-11 18:56:34 其他开发