重载 Ruby 的 [...] 数组创建简写

2024-07-04

我编写了一个库,它通过主要通过方法别名来观察包装器来扩展几个基本 Ruby 类。然而,我在数组实例化简写中遇到了障碍(例如@a = [1, 2, 3])我似乎找不到通过速记方式创建 Array 对象时实际调用的任何方法。这不是遗传#[]当前作用域中的方法或从祖先链中的任何类或模块继承的方法。我还重载或观察了类中的每个方法#new到一个实例的#initialize到单例方法#[]基于 Ruby C 代码的 Array 类对象

rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);

有谁知道如何分配一个位于速记数组实例实例化的方法链中的方法?


不幸的是,与地球上几乎所有其他编程语言一样,Ruby 不允许文字重载。如果您需要文字重载,则必须使用支持它的少数编程语言之一,例如Ioke http://Ioke.Org/ or Seph http://Seph-Lang.Org/.

这是 Ioke 中的一个例子:

[] = method(foo, foo println)
[1]
; 1

在塞夫:

[] = #(foo, foo println)
[1]
; 1

[请注意,这些当然会对您的系统造成严重破坏,因为,例如,Ioke/Seph 标准库的很大一部分是在 Ioke/Seph 中实现的,并且它们到处都使用列表,因此在生产中系统,您需要正确封装它。]

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

重载 Ruby 的 [...] 数组创建简写 的相关文章

  • 将 float 重载到 numpy 数组

    我有一个函数 处理一维 numpy 数组 如下所示 def f arr arr asarray arr process data as numpy array return arr With asarray我允许使用列表调用该函数f 4 5
  • python - 计算列表中单词之间的拼写相似度

    我需要计算给定语料库中单词之间的拼写相似度 编辑 编辑距离 正如基里尔下面所建议的 我尝试执行以下操作 import csv itertools Levenshtein import numpy as np import the list
  • 将数组推入同一个数组 javascript

    我试图将一个数组推入 JavaScript 中的同一个数组中 但它似乎不起作用 到目前为止 这是我的代码 var arr Hello World arr push arr console log arr 预期输出 Hello World H
  • Excel过滤公式用于数组中的多个条件和值

    我正在尝试从一个表中过滤一些信息 但我需要标准来查找数组内的一些信息 我将举一个例子来尝试解释我需要什么 我需要让每个人都从Array1 E2 E4列于TABLE1 A2 C4并且有Monday and Yes在各自的列上 希望这是有道理的
  • PHP数组在数据库中插入太多记录

    如果我只输入 1 条记录 它只在数据库中保存 1 条记录 这很好 但是如果我放置相同字段的两条记录 它在数据库中保存多条记录 而数据库中应该只有两条记录 我做错了什么 td 1 td
  • 将 Java 数组转换为 Clojure 列表或序列?

    如何将 Java 数组转换为 Clojure 序列数据结构 例如列表或其他序列 This question https stackoverflow com q 16647261 712526展示如何进行相反的操作 Clojure 文档展示了
  • 对任意数量的数组的所有可能组合求和并应用限制并返回索引

    这是一个修改这个问题 https stackoverflow com questions 40410766 summing all possible combinations of an arbitrary number of arrays
  • Python的List是如何实现的?

    是链表还是数组 我环顾四周 只发现人们在猜测 我的C语言知识还不够好 无法看源代码 实际上 C 代码非常简单 扩展一个宏并修剪一些不相关的注释 基本结构为listobject h https github com python cpytho
  • C : 在空数组中插入/获取元素

    我必须创建一个可以包含通用数据结构的通用数组 如何将通用结构放入 void 数组的空槽中 这是我的代码 struct CircularBuffer int E int S int length total number of item al
  • 从 irb 获取所有局部变量或可用方法?

    当我进入 irb 并输入不存在的命令时 我收到一条错误消息 undefined local variable or method my method for main Object NameError 有没有办法只获取可用的局部变量或方法的
  • 如何在 Mongoid 中引用嵌入文档?

    使用 Mongoid 假设我有以下类 class Map include Mongoid Document embeds many locations end class Location include Mongoid Document
  • 为什么这个简单的洗牌算法(通过 random() 排序)存在偏差?

    In 这个线程 https stackoverflow com a 18650169 17102262我们看到这个简单而漂亮的算法来洗牌数组 function shuffle
  • groovy 中数组的重载 + 运算符

    我是一个时髦的新手 也许这是小菜一碟 但我想重载数组 列表的 运算符以编写如下代码 def a 1 1 1 def b 2 2 2 assert 3 3 3 a b 我不建议在全球范围内覆盖既定的行为 但是 如果您坚持 这将按照您的要求进行
  • 如何在 C++ 中最有效地将像素数组渲染到窗口?

    到目前为止 我一直在使用 SDL 2 0 将像素数组复制到纹理中 然后在屏幕上渲染 我的渲染方法如下所示 for int i 0 i lt WIDTH HEIGHT i pixels i 0xFFFF0000 pixel Format AA
  • 红宝石数学宝石

    有谁知道是否有适合数学 几何运算的好宝石 我需要一些这样的东西 点积 叉积 向量之间的角度 Matrix 表面法线 向量计算 加 减 奇异值分解 thx tux 我强烈推荐Ruby GSL http rb gsl rubyforge org
  • 在 Ruby 中对数组使用冒泡排序方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试将冒泡排序方法实现为 Ruby 的一个简单编码问题 但遇到了一些麻烦 我理解这个想法是查看第一个元素的值并将其与第二个元素的
  • 测试用户输入数组中的重复项的最有效方法是什么?

    我正在尝试编写一个模拟器来玩强力球彩票 程序会要求5数字 又名白球 并输入到6元素数组和另一个数字 红色强力球 放入6th 元素 我需要弄清楚如何首先测试重复项5元素但6th 不需要是唯一的 我有一个循环 我认为可以工作 但它甚至不执行并且
  • 使用 Appium 和 Ruby 测试 iOS 应用程序时等待元素加载?

    我正在测试一个iOS应用程序 登录后无法与元素交互 因为Appium运行得太快了 有人可以给我指出一个使用 WebDriverWait 风格等待 Appium iOS 测试的示例吗 最好用红宝石 Thanks 这对我有用 但我是 Appiu
  • Numpy,沿数组维度应用函数列表

    我有一个类型的函数列表 func list lambda x function1 input lambda x function2 input lambda x function3 input lambda x x 和形状为 4 200 2
  • Rails 5 编写类似查询的最佳控制器操作

    我想通过客户名称进行 ajax 搜索查询 因此我使用了 like 子句 看到这个问题 https stackoverflow com questions 26094430 safe activerecord like query 我正在考虑

随机推荐

  • 使用 FileChannel 与 NIO.2 同步目录

    我刚刚发现 有了NIO 2 至少在Linux下 我可以打开一个FileChannel在目录上 并调用力 真 http download oracle com javase 7 docs api java nio channels FileC
  • gc() 和 rm() 有什么区别

    我定期使用调用来清理 R 中的内存rm list ls 我需要调用垃圾收集器吗gc 在那之后 这2个函数有什么区别 做gc call rm 对于某些变量 首先 需要注意的是 两者有很大不同gc不删除any您仍在使用的变量 它只会为您不再有权
  • Firebase 数据库崩溃 SQLiteDatabaseLockedException

    我在少数设备上遇到此崩溃 但仅限于 Android 4 我使用的是 Firebase Android SDK 10 2 1 11 0 2 推迟更新到最新版本 因为它也会强制更新 Google Play 服务 并且许多用户继续保留旧的 GPS
  • 谷歌图表错误请求

    有谁知道为什么这是一个错误的请求 http chart apis google com chart cht lxy chd t 0 0 7 1 4 2 2 2 9 3 6 4 3 5 5 8 6 5 7 2 7 9 8 6 9 4 10 1
  • 声明时指针总是设置为 nil 吗?

    我找到了各种人 文章 例如这个答案 https stackoverflow com a 1262500 37941 表明 Objective C 中指针的值在你给它赋值之前是没有定义的 但是 我在实践中发现它们会自动设置为nil甚至在我打电
  • 如何使用 PHP 获取当前年份?

    我想在网站的页脚中放置版权声明 但我认为它对于今年来说已经过时了 非常俗气 我如何使用 PHP 自动更新年份 Answer recommended by PHP collectives php Collective 您可以使用date ht
  • 我已经严重破坏了 Cython,它的性能比纯 Python 还差。为什么?

    我对 Python 相当陌生 并且对 C 完全无知 不幸的是 因此我正在努力正确理解使用 Cython 的某些方面 在对 Python 程序进行分析并发现它只是几个循环占用大部分时间后 我决定考虑将它们转储到 Cython 中 最初 我只是
  • 将 Firebase 存储映像与 Glide 结合使用

    有大量重复的答案 我几乎尝试了所有答案 但我仍然无法将 Firebase 存储映像与 Glide 一起使用 首先我正在使用docs https firebase google com docs storage android downloa
  • C++ 和 gnuplot

    这是我的第一篇文章 我对 C 和编译总体来说还是个新手 我正在编译一个需要绘制一些图表的程序 该程序创建一个 dat 文件 然后我应该打开 gnuplot 并编写绘图 dat 没关系 有没有办法让 gnuplot 自动打开并显示我需要的图
  • 如何确定 Windows 的版本?

    如何确定 Windows 的版本 WinXP Vista 或 7 等 32 位还是 64 位 UPD 适用于 Net 2 0 3 5 您正在寻找Environment OSVersion Environment Is64BitProcess
  • Python - scikit_learn 中的克里金法(高斯过程)

    我正在考虑使用这种方法来插值我拥有的一些 3D 点 作为输入 我有一个区域内不同海拔处的气体大气浓度 我所拥有的数据显示为几十英尺的垂直高度每隔几英尺的值 但水平方向间隔数百英尺 因此是紧密排列的值的 列 假设在任何给定时间点 垂直方向上的
  • 需要帮助理解模块导入错误

    我正在尝试使用 sendgrid Python API 作为 web2py 中的模块 从命令行成功测试它后 我将其放入我的模块文件夹中 但是当我尝试将 sendgrid 导入到我的控制器文件中时 我得到 File applications
  • Xcode 6 具有 Swift 超慢打字和自动完成功能

    是只有我还是 Xcode 6 6 0 1 with Swift 似乎是超级慢当您键入代码时 尤其是使用自动完成功能时 一个普通的 Objective C 类 即使在 Swift 项目中 工作原理也几乎和以前一样 所以是 Swift 杀死了它
  • 当我使用 toastnotification 执行 python exe 时,显示未找到 win10toast 发行版

    当我使用 toastnotification 执行 python exe 时 显示未找到 win10toast 发行版 from win10toast import ToastNotifier toaster ToastNotifier t
  • 如何获取集合类型的任何变量的元素数量?

    AFAIK 没有内置函数 在网上搜索我发现了这个function http www codenewsfast com cnf article 0 permalink art ng53q107885它对我有用 但我不想使用它 因为它是汇编 我
  • 如何通过 Facebook 上的广告 API 获取广告系列列表?

    我正在尝试从 Graph API Explorer 获取活动列表 我正在使用在以下位置找到的请求https developers facebook com docs marketing api reference ad account ca
  • 连接到 Postgres Docker 服务器 - 身份验证失败

    我设置了一个 PostgreSQL 容器 可以使用 Adminer 成功连接到该容器 但在尝试使用相同凭据通过 DBeaver 等方式进行连接时 出现身份验证错误 我尝试在 Dockerfile 中公开端口 5432 并且可以在 Windo
  • 将鼠标悬停在按钮上在 Firefox 上不起作用

    我编写了一些按钮 这些按钮在悬停时会增大尺寸 它在 Chrome 上完美运行 但在 Firefox 上却不起作用 出了什么问题 P1 background color transparent border 0 background repe
  • 在 GCE 中创建实例模板只是悬而未决

    尝试在 GCE 中设置一个试点来尝试 GKE 我正在尝试从 gcloud 容器集群创建 创建的实例模板的副本创建一个新的实例模板 每个实例有更多空间 并且创建只是挂起 有什么明显我没有做的事情吗 在此输入图像描述 https i stack
  • 重载 Ruby 的 [...] 数组创建简写

    我编写了一个库 它通过主要通过方法别名来观察包装器来扩展几个基本 Ruby 类 然而 我在数组实例化简写中遇到了障碍 例如 a 1 2 3 我似乎找不到通过速记方式创建 Array 对象时实际调用的任何方法 这不是遗传 当前作用域中的方法或