Ruby 数组初始化 [重复]

2023-11-22

我需要知道这两个语句之间的技术差异以及为什么它会这样:

arr = Array.new(3, "abc")
=> ["abc","abc","abc"]
arr.last.upcase!
=> "ABC"
arr
=>["ABC","ABC","ABC"]     # which is **not** what I excepted

另一方面:

arr = Array.new(3){"abc"}
=> ["abc","abc","abc"]
arr.last.upcase!
=>"ABC"
arr
=> ["abc","abc","ABC"]     # which is what I excepted

参数总是在方法调用之前评估,而块仅在方法调用期间以方法控制的时间评估(如果曾经评估过)。

在你的第一个例子中,参数"abc"在该方法之前评估一次new叫做。评估的对象被传递给方法new。创建的数组的所有三个元素中都使用完全相同的对象。修改一个就意味着修改所有。

在你的第二个例子中,块{"abc"}每次为数组生成新元素时都会对其进行评估。创建的数组中的三个元素是不同的对象。

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

Ruby 数组初始化 [重复] 的相关文章

  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • ruby 的 String .hash 方法如何工作?

    我只是红宝石的新手 我见过一个字符串方法 String hash 例如 在irb 我试过了 gt gt mgpyone hash returns gt 144611910 这个方法是如何工作的 The hash方法是为所有对象定义的 看文档
  • Ruby mp3 Id3 解析

    目前我正在从事一个音乐项目 处理用户 mp3 上传 问题是我找不到适用于所有文件的 id3 库 我努力了id3 ruby and Mp3Info库 但它们都没有给我一致正确的结果 例如 最常见的问题 错误的流参数 比特率和采样率 有时是持续
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • 将 ruby​​ 类转换为模块比使用改进更好的方法?

    Module refine http ruby doc org core 2 0 0 Module html method i refine方法接受一个类和一个块并返回一个细化模块 所以我想我可以定义 class Class def inc
  • class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

    我正在读Module文档 但似乎无法理解它们的差异以及应该在哪里使用 怎么样eval不同于exec 我将回答比你的问题更多的内容 包括instance eval exec 在你的问题中 所有变体 instance module class
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • 需要野科切吗?没有要加载的文件

    我正在尝试开始使用 Nokogiri 我运行了命令 gem install nokogiri 作为 Windows 7 64 位 中的管理员 控制台显示 已成功安装 和 已安装 1 个 gem 当我输入时 gem list local OR
  • 如何全局忽略 UTF-8 字符串中的无效字节序列?

    我有一个 Rails 应用程序从 Rails 版本 1 以来的迁移中幸存下来 我想忽略all其上的无效字节序列 以保持向后兼容性 我不知道输入编码 示例 gt Men xFC split n ArgumentError invalid by
  • ruby 2.0.0p247 的分段错误导致 Rails 服务器崩溃

    在 OS X Mavericks 1 9 上运行 Rails 4 0 Ruby 2 0 0p247 我今天遇到了一个我从未遇到过的错误 我不明白 当尝试在我的项目中启动 Rails 服务器时 服务器崩溃了 我确实尝试重新安装并重新编译一次
  • Ruby 的 Faraday - 多次包含相同的参数

    我正在使用一个 API 该 API 迫使我多次发送相同的参数名称以级联不同的过滤条件 因此 示例 api GET 调用如下所示 GET http api site com search a b1 a b2 a b3 a c2 我使用 Far
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • 默认:Rails 资源路由的排除选项

    一个小问题 我正在将 Rails 用于 REST API 但由于它是 RESTful API 所以我并不真正需要 new or edit我的任何资源的路由 因为人们只会完全通过自动 JSON 请求而不是图形方式与此 API 交互 例如 不需
  • 使用 Mechanize (Ruby) 进行基本身份验证和表单身份验证

    我正在尝试登录公司内部网上的一个站点 该站点具有基本身份验证弹出对话框和基于表单的身份验证 这是我正在使用的代码 导致 401 gt Net HTTPUnauthorized 错误 require rubygems require mech
  • 为什么包含此模块不会覆盖动态生成的方法?

    我试图通过包含一个模块来覆盖动态生成的方法 在下面的示例中 Ripple 关联添加了rows 方法表 我想调用该方法 但之后还要做一些额外的事情 我创建了一个模块来重写该方法 认为该模块的row 可以打电话super使用现有的方法 clas
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • 如何在 Ruby 中重写 require ?

    我需要覆盖require来自 Ruby 文件 这是我的 start rb 应用程序入口点 所必需的 rubygems在此之前加载 位于 start rb 中 我尝试的所有操作都出现了堆栈溢出错误 正确的做法是什么 一般来说 如果你想修补一些
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache

随机推荐

  • 原生 Java 字节码检测

    对于 Java 中的字节码检测 有 asm 框架以及 bcel 和 javaassist 库 但是 我需要在本机代码中进行检测 因为在 javaagent 运行时已经加载了一些 java 类 例如 java lang Thread java
  • 编辑按钮未显示在 UITabBarController 的 MoreNavigationController 中

    A UITabBarController被压入堆栈 let presenter presentingViewController as UINavigationController let tabvc UITabBarController
  • WCF客户端代理初始化

    我正在使用 WCF 服务并使用 VS 2008 服务引用创建其代理 我正在寻找调用 WCF 服务方法的最佳模式 我是否应该在每次调用服务方法时创建客户端代理实例并在完成后立即关闭客户端 当我分析我的客户端应用程序时 我可以看到在初始化代理客
  • Google SDTT 中的错误:“为 url 提供的所有值必须指向同一页面。”

    我正在尝试为 ecom 网站上的产品列表创建一些 JSON LD 结构化数据 但在使用 Google 的结构化数据测试工具时遇到错误 到目前为止 我有这个 context http schema org type OfferCatalog
  • NSXML解析器错误域 111

    下面的代码打印以下消息 Error Domain NSXMLParserErrorDomain Code 111 The operation couldn t be completed NSXMLParserErrorDomain erro
  • 如何向变成 iBeacon 的 iPhone 发送数据?

    如何将数据发送到充当 iBeacon 的 iPhone 我正在寻找如下流程 搜索附近的 iBeacons 连接到一些 iBeacon 在设备之间交换数据 有谁知道如何将不同的蓝牙功能组合在一起 这可能吗 提前谢谢 标准iBeacons 是仅
  • 更新flutter后启动黑屏

    我最近更新了颤振 为了运行 flutter 项目 我通过 USB 使用 android 更新后 每个项目在启动时都会显示黑屏 以前的版本运行良好 我尝试更改启动画面 drawable launch background xml 在andro
  • 如何检查 uiimage 是否为空? (空、透明)

    这是检查是否存在的最佳方法UIImage是空白的 我有这个绘画编辑器 它返回一个UIImage 如果这张图片上没有任何内容 我不想保存它 试试这个代码 BOOL isImageFlag self checkIfImage image 和 c
  • 可以阻止 Enter 仅从某些输入字段在 JavaScript 中提交表单 [重复]

    这个问题在这里已经有答案了 我有一个表格onkeyup触发为某些字段创建建议框 我能够捕获向上箭头 向下箭头和转义的击键 并相应地使用它们在建议框中移动或关闭它 我想使用 Enter 将他们的选择移动到触发建议的输入字段中 但是 我似乎无法
  • 为什么价值观不同? C++ 指针

    我正在谷歌搜索一个解决方案来找出 C 中数组的长度 我发现的解决方案之一是这样的 int arr 1 2 3 4 5 6 int size arr 1 arr size is the length of the array 我很困惑 arr
  • 使用 Fluent API 的 EF 外键

    这是我的模型 我有车辆和驾驶员的一对一映射 我将首先创建车辆 然后将驾驶员映射到车辆 public class Driver public int Id get set public String Name get set public i
  • common-js utils 中的 JSON 模式验证是否支持引用?

    common js utils 中的 JSON 模式验证是否支持引用 我不能这样做https github com kriszyp commonjs utils blob master json schema js 我尝试了以下代码 typ
  • didUpdatePushCredentials 没有被调用

    我想在我的 iOS 应用程序中实现 VoIP 通知 但是didUpdatePushCredentials方法从未被调用 我无法获取设备令牌 我在应用程序中实现了 APNS 这两个服务可能会冲突吗 这是我的 AppDelegate 代码 vo
  • 设置应用默认支付服务

    让我们考虑一下用户安装了多个支持 NFC HCE 支付的应用程序的情况 这些应用程序服务在设置 NFC Tap and Pay 下可见 如果不是 如何以编程方式将您的应用程序更改为默认支付服务 CardEmulation似乎只有 API 可
  • 如何修复类型“string”不可分配给类型“T[keyof T]”

    给定以下 Typescript 函数 const setter
  • 如何在 Swift 中取消本地通知触发器

    我有一个触发器向用户显示通知 let content UNMutableNotificationContent content title Title content body Body content sound UNNotificati
  • 在 Android 版本 42 或更高版本的 Firefox 中安装未签名的 XPI

    我正在尝试重新开发一个旧项目 即我正在开发的 Android 版 Firefox 扩展 我有两部手机 一部是私人的 一部是工作的 我的 Firefox 是旧版本 40 它的工作原理与以前完全相同 但是 在我工作的手机的升级版本 Firefo
  • Qt 不加载 JPG ,仅加载 PNG

    我与同事在 Windows 7 64 位版本 Visual Studio 2008 上处理同一个项目 他们加载 JPG 并开始工作 通过 QPixmap 和样式表 并且有效 但对我来说 我只能使用 PNG 其余的根本不起作用 我还尝试更改环
  • Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Cocoa 应用程序的语法着色 我对 感兴趣语法高亮 in a Cocoa文本视图 我找到了几个资源 灵活接近 via a flex模式匹配textStorageDidProcessEditing i
  • Ruby 数组初始化 [重复]

    这个问题在这里已经有答案了 我需要知道这两个语句之间的技术差异以及为什么它会这样 arr Array new 3 abc gt abc abc abc arr last upcase gt ABC arr gt ABC ABC ABC wh