使对象的行为类似于 Ruby 中并行赋值的数组

2023-12-28

假设您在 Ruby 中执行此操作:

ar = [1, 2]
x, y = ar

然后,x == 1 且 y == 2。是否有一种方法可以在我自己的类中定义,从而产生相同的效果?例如

rb = AllYourCode.new
x, y = rb

到目前为止,我对这样的赋值所能做的就是使 x == rb 且 y = nil。 Python有一个这样的特性:

>>> class Foo:
...     def __iter__(self):
...             return iter([1,2])
...
>>> x, y = Foo()
>>> x
1
>>> y
2

是的。定义#to_ary。这将使您的对象被视为分配的数组。

irb> o = Object.new
=> #<Object:0x3556ec>
irb> def o.to_ary
       [1, 2]
     end
=> nil
irb> x, y = o
=> [1,2]
irb> x
#=> 1
irb> y
#=> 2

和...之间的不同#to_a and #to_ary就是它#to_a用于尝试转换 给定对象到数组,而#to_ary如果我们可以将给定对象视为数组,则可用。这是一个微妙的区别。

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

使对象的行为类似于 Ruby 中并行赋值的数组 的相关文章

随机推荐

  • 在 python 中创建元组集

    如何创建一组元组 每个元组包含两个元素 每个元组都会有一个x and y value x y 我有数字 1 到 50 并且想要分配x为所有值 1 到 50 以及y也是 1 到 50 S 1 1 1 2 1 3 1 4 1 50 2 1 50
  • Android 设备上的渲染 webview 与同一父级的先前兄弟姐妹重叠

    反应本机 0 57 集成 RN webview 或 email protected cdn cgi l email protection 在模拟器上 所有同级都会被渲染 文本组件 1 3 在真实设备上 webview 与之前的同级视图重叠
  • codeigniter 中未定义的常量 JSON_UNESCAPED_UNICODE

    我创建一个 Json 文件 json array Add gt array context gt context date gt date Version gt array version gt version And context是波斯
  • JavaScript foreach 关联数组对象上的循环

    为什么我的 for each 循环没有迭代我的 JavaScript 关联数组对象 Defining an array var array Assigning values to corresponding keys array Main
  • Java在MySQL数据库中创建表

    首先感谢之前帮助过我的人 我目前遇到的问题是这行代码 statement executeUpdate myTableName 或者用这些代码行 String myTableName CREATE TABLE AgentDetail idNo
  • TActionMainMenuBar、VCL 样式和 MDI 按钮(最小化、关闭等)未设置样式。

    我试图让 TActionMainMenuBar 像 TMainMenu 一样显示样式化的 MDI 按钮 有什么建议么 我无法停止在这个项目中使用 MDI 好的 首先这不是 Vcl 样式错误 这是一个 VCL 错误 即使禁用了 Vcl 样式
  • HTML5 Boilerplate plugins.js 问题

    有人可以向我解释一下他们如何使用plugins js 文件吗 在 HTML5 样板中找到 我不太明白目的 它的用途 或者它如何发挥作用 谢谢 我写了一个入门指南 https github com paulirish html5 boiler
  • UIApplicationDelegate openURL 的 SourceApplication 参数是否应该为零?

    我的 iOS 应用程序通过 UIApplicationDelegate 的 openURL 方法接收来自其他 iOS 应用程序的文件 我在应用程序中使用 NSString SourceApplication 参数来跟踪将文件发送到我的应用程
  • 如何阻止 MainWindow 关闭整个应用程序

    我正在尝试从 WPF 应用程序中的子窗口关闭主窗口 问题是 一旦我尝试 关闭 主窗口 我的整个应用程序就会关闭 这是我在主窗口 pgLogin 中的编码 Window nextWindow null nextWindow new pgDas
  • 在状态栏中显示通知文本 - Android

    在我的应用程序中 我需要向用户显示通知 以下代码片段非常有效 可以在 Android 设备标题栏中显示图标和内容标题 var notificationManager GetSystemService Context Notification
  • 如何在WPF中使用DockStyle.Fill作为标准控件?

    我从 Windows 窗体中使用 我创建一个面板 将控件放在其中并给它们DockStyle Fill以最大程度地扩大其周围面板的尺寸 在 WPF 中我想要同样的 我有一个 TabControl 我希望它的大小尽可能多地填充表单 我有一个功能
  • 如何构建 DynamoDB 数据库以允许查询热门帖子?

    我计划使用以下公式来计算 热门 帖子 Trending Score p 1 t 2 1 5 p 用户的投票 积分 t 自提交以来的时间 以小时为单位 我正在寻求有关如何构建数据库表的建议 以便我可以使用 DynamoDB 来自 Amazon
  • 如何在java中使用openCV检查两个图像是否相似?

    我必须使用 OpenCV 检查两个图像在 java 中是否相似 我正在使用 OpenCV 并使用 ORB 这是我的主要课程 System out println Welcome to OpenCV Core VERSION System l
  • C# 大对象和堆

    我对堆中大型对象的存储有点困惑 例如 对象的大小被认为是大的 哪些类型更有可能被视为大对象 是否有任何明确的碎片方法适合管理此类对象 本文 https devblogs microsoft com dotnet large object h
  • 当网络视图无法使用互联网时,如何显示没有互联网连接的弹出窗口和 html 页面?

    我在我的应用程序中使用 webviews 并希望确保当互联网不可用时 弹出消息显示没有互联网连接 并且还在后台显示一个 html 页面 说明需要互联网连接 我添加了一些用于检查互联网连接的代码 但它不起作用 显示复选标记错误 基于在线研究添
  • MySQL:连接类型的快速细分[重复]

    这个问题在这里已经有答案了 我想快速了解一下 MySQL 连接的类型 我知道这些 其余的我不确定它们的意思 逗号分隔 什么exactly这是缩写吗 SELECT FROM a b WHERE b id a beeId AND 显示来自 a
  • 在bash中用(下划线)_替换空格的最简单方法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 最近 我不得不编写一个小脚本来解析
  • SSRS 2008,自定义 dll,找不到文件

    我已经和 SSRS 斗争了一段时间了 这太愚蠢了 当我添加对 dll 的引用 这是同一解决方案的一部分 时 它只给了我一个 rsErrorLoadingCodeModule 错误 加载代码模块时 MyFile MyClass Code 版本
  • 隐藏 UIStatusBar 而不删除为其分配的空间

    我有图片示例来向您展示我想要什么以及我现在拥有什么 首先 这是我在 Slack 应用程序中尝试执行的操作的示例 状态栏正常显示 但当你打开侧抽屉时 它就消失了 我可以在我的应用程序中显示状态栏 但是当我隐藏它时 它也隐藏了框架 因此顶部的空
  • 使对象的行为类似于 Ruby 中并行赋值的数组

    假设您在 Ruby 中执行此操作 ar 1 2 x y ar 然后 x 1 且 y 2 是否有一种方法可以在我自己的类中定义 从而产生相同的效果 例如 rb AllYourCode new x y rb 到目前为止 我对这样的赋值所能做的就