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

2023-11-21

我试图理解之间的区别*(1..9) and [*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) and [*1..9]直接地。

*(1..9).map{|a| a.to_s}  # syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
[*1..9].map{|a| a.to_s}  # ["1", "2", "3"...]

我猜部分问题在于操作员的优先级?但我不太确定发生了什么事。为什么我无法使用*(1..9)我可以用同样的[*1..9]?


我认为问题在于 splat 只能用作左值,也就是说它必须被某些东西接收。

所以你的例子*(1..9).map失败,因为没有 splat 的接收者,但是[*1..9].map之所以有效,是因为您正在创建的数组是 splat 的接收者。

更新: 有关此线程的更多信息(尤其是最后一条评论):在哪里使用 ruby​​ splat 运算符是合法的?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解范围和数组中的 ruby​​ splat 的相关文章

  • 如何编写一个在安装 RubyGem 时调用的钩子?

    我想编写一个 Ruby 片段 当我的 Gem 首次安装时运行 sudo gem install mygem 能做到吗 看起来并没有真正支持 我发现了一个 post install message 属性 您应该能够在 gem 规范中设置该属性
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 下载所有 gems 依赖项

    我想通过下载任何所需的文件并将它们带到另一台计算机来安装指南针没有互联网连接 我已经下载了指南针的源包 当我在未连接的计算机上运行 gem 时 它抱怨缺少依赖项 有什么解决办法吗 这正是我遇到的问题 经过一段时间的搜索后 我找到了一个可以使
  • 两个 ruby​​ 进程之间的通信可能/容易吗?

    如果我有一个 ruby 脚本Daemon顾名思义 它作为守护进程运行 监视系统的某些部分并能够执行需要身份验证的命令 例如更改权限 是否有一种简单的方法来拥有第二个 ruby 脚本 例如client 与该脚本通信并向其发送命令 询问信息 我
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • 升级到 Rails 6 时是否有一种编程方法可以检测 Zeitwerk::NameError?

    我目前正在将旧的 Rails 应用程序迁移到 Rails 6 好像项目中有些文件和里面定义的类不一致 运行应用程序测试时我没有看到此错误 但部署后我收到如下错误 Zeitwerk NameError expected file app my
  • 需要野科切吗?没有要加载的文件

    我正在尝试开始使用 Nokogiri 我运行了命令 gem install nokogiri 作为 Windows 7 64 位 中的管理员 控制台显示 已成功安装 和 已安装 1 个 gem 当我输入时 gem list local OR
  • Ruby 的 Faraday - 多次包含相同的参数

    我正在使用一个 API 该 API 迫使我多次发送相同的参数名称以级联不同的过滤条件 因此 示例 api GET 调用如下所示 GET http api site com search a b1 a b2 a b3 a c2 我使用 Far
  • 随机采样数组的唯一子集

    如果我有一个数组 a 1 2 3 如何随机选择数组的子集 以使每个子集的元素都是唯一的 也就是说 对于a可能的子集是 1 2 3 1 2 2 3 1 2 3 我无法生成所有可能的子集 因为 a 的实际大小非常大 因此有很多很多子集 目前 我
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 默认:Rails 资源路由的排除选项

    一个小问题 我正在将 Rails 用于 REST API 但由于它是 RESTful API 所以我并不真正需要 new or edit我的任何资源的路由 因为人们只会完全通过自动 JSON 请求而不是图形方式与此 API 交互 例如 不需
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • 如何在 Ruby 中动态调用访问器方法[重复]

    这个问题在这里已经有答案了 不管这是否是好的做法 我如何在 Ruby 中动态调用访问器方法 这是一个示例类 class Test Class attr accessor a b end 我可以使用 Object send 方法来读取变量 i
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • 由于 MIME 类型不受支持,拒绝应用样式

    我不断收到一条错误消息 指出 MIME 类型 text html 不可执行或不是受支持的样式表 MIME 类型 并且启用了严格的 MIME 检查 我的链接代码是
  • 将一幅图像合成到另一幅图像上时,RMagick 透明度不起作用

    在下面的代码中 我尝试在一些山脉的图像上覆盖一个透明的正方形 我认为它会起作用 但是通过设置background color none 它不会使图像透明 结果是左上角有一个黑色方块 所需的结果是黑色方块应该是透明的 require open

随机推荐

  • 如何将 Spring @Autowired 所需属性设置为 false 进行测试?

    到目前为止 我一直在使用 Required 注释来确保 Spring 配置的应用程序中的 DI Bean 要启用注释 您需要在配置中声明一个RequiredAnnotationBeanPostProcessor bean 在你的测试配置中
  • 规避 SCHEME 中的 EVAL

    彼得 诺维格 Peter Norvig 在 PAIP 中说道 在现代 lisps 中 eval 很少被使用 事实上 在Scheme 中有 根本没有评估 如果您发现自己使用 eval 那么您可能是 做错事 有哪些方法可以规避使用eval在计划
  • 在 if 语句中分配和测试变量的最合适方法是什么?

    以下哪一种是首选的做事方式 为什么 是否有任何具体情况会产生任何影响 假设函数 bar 在任何时候都不取零值 案例1 测试两个条件的真值 if foo bar foo lt 0 error 情况 2 仅测试分配的变量 if foo bar
  • 如何在 IE 中一次性下载多个文件

    我想通过单击 jsp 中的按钮来下载多个文件 我在 js 中使用以下代码来调用一个 servlet 两次 var iframe document createElement iframe iframe width iframe height
  • UIView 动态高度取决于标签高度

    我有一个标签 它动态地从数据库中获取一些数据 这些数据是字符串 有时可以是 3 4 5 行等 所以这个标签位于 UIView 内部 UIView Label 我怎样才能使UIView动态获取标签的特定高度 你可以用这张照片的故事板来做 将标
  • 保护 git 存储库中的文件

    我有一个中央存储库 其中包含我希望防止其他用户更改 通过推送 的文件子集 如果我将这些文件添加到 gitignore 它们不会被克隆 是否可以提供克隆所有文件的能力 但克隆后将其中一些添加到 gitignore在客户端 您可以将文件放在存储
  • WCF 是否始终使用 SOAP 通过绑定发送信息?

    据我所知 您可以从一系列绑定中进行选择 例如 TCP HTTP HTTPS 等 我认为它总是使用 SOAP 通过此连接发送数据是否正确 我正在观看 WCF 指南 其中讨论了如何将异常序列化为 SOAP 并发送到客户端 我本以为并非所有绑定都
  • Android 检查是否有WiFi但上不了网

    我正在编写一个程序 需要检查三种状态 1 如果我没有 WiFi 2 如果我有 WiFi 但没有互联网连接 就像我打开路由器但拔掉以太网电缆 以及 3 如果我有 WiFi 和互联网连接 然后 我会更改应用程序中图标的颜色来代表这些状态之一 红
  • Ctrl+Space 更改键盘,而不是在 Visual Studio 2010 上显示 Intellisense 的自动完成列表

    我注意到 Visual Studio 2010 意外地更改了键盘布局 我尝试了一些解决方案 例如 Going to Windows Control Panel and removing other languages Going to Me
  • 使用 MVVM 从 WPF 应用程序启动对话框/子窗口的标准方法

    所有 我想知道使用 MVVM 模式从 WPF 启动 子 对话框 窗口的公认最佳方法 行业标准 我遇到过以下文章 A CodeProject 使用 MVVM 模式时显示对话框 这种方法对我来说似乎不错 但有些过分了 这是某种程度的代码复制 我
  • Python 3 中大于 10^2000 的数字的平方根

    我想在Python中计算大于10 2000的数字的平方根 如果我将这个数字视为普通整数 我总是会得到这个结果 Traceback most recent call last File line 3 in
  • 在项目“MyProject”上运行构建器“Faceted Project Validation Builder”时出错

    我正在研究 Blackberry webworks Phonegap 框架 Apache Ant 并使用示例 index html 在 Eclipse 3 6 中配置它们 我关注了这篇文章PhoneGap BlackBerry WebWor
  • 您可以从 GitHub 上的命令行发出拉取请求吗?

    似乎您必须与 github com 交互才能发起拉取请求 是这样吗 UPDATE The hub命令现已成为官方github项目 也支持创建拉取请求 ORIGINAL 似乎添加到 hub 命令中特别有用 http github com de
  • ES6 类私有属性只是语法糖吗?

    使用 语法我们现在可以创建私人财产在 ES6 类中是这样的 class Person name constructor name this name name getName return this name let ron new Per
  • Lambda 表达式以及如何组合它们?

    如何使用 OR 将两个 lambda 表达式合并为一个 我已尝试以下操作 但合并它们需要我将参数传递到表达式 调用调用 但是我希望将传递到新 lambda 的值传递到每个子 lambda 上 Expression
  • Java:以编程方式确定类路径上加载的所有包名称

    关于如何找到列表的任何建议包名存在于当前类路径 这需要在运行时由类路径上加载 和执行 的类之一以编程方式完成 即 反了 而不是从外到内 更多细节 我考虑的一种方法是对类加载器迄今为止加载的每个类使用反射 并从中提取包名称 但是 我的应用程序
  • iOS 6 ViewController 正在旋转但不应该旋转

    我希望我的几个应用程序视图控制器在 iOS 6 0 中不旋转 这就是我为使 iOS 6 中的轮换成为可能而所做的 1 在 application didFinishLaunchingWithOptions 中设置 windows rootv
  • 动态生成的 HTML 的格式 - 没人关心吗?

    I have veryWeb开发经验很少 所以这可能是一个非常基本的问题 只是 以我有限的经验来看do有 一点PHP 一点Ruby on Rails 动态生成HTML的方式似乎是格式化的只是 没关系 它最终变得丑陋 有奇怪的缩进 没有人关心
  • 流式传输 xml-conduit 解析结果

    我想用xml conduit 具体来说Text XML Stream Parse为了从大型 XML 文件中延迟提取对象列表 作为测试用例 我使用最近重新发布的 StackOverflow 数据转储 为了简单起见 我打算从中提取所有用户名st
  • 理解范围和数组中的 ruby​​ splat

    我试图理解之间的区别 1 9 and 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 但