在 Ruby 中使用 new 运算符对自动激活哈希值进行多重初始化

2023-12-07

我想初始化几个自动激活哈希值通过一行表达式。到目前为止,我找到了一种额外的方法AutoHash object:

class AutoHash < Hash
  ...
  def few(n=0)
    Array.new(n) { AutoHash.new }
  end

这使我可以执行以下操作

a, b, c = AutoHash.new.few 3

然而,我觉得可以通过定义一个新的运算符来使下面的句子成为可能:=

a := b := c = AutoHash.new

你能帮我实现这个吗?


我必须使用超级者?

require 'superators'

class AutoHash < Hash
  ...
  superator ":=" do |operand|
    if operand.kind_of? Hash
      ...
    else
      ...
    end
  end

Update:现在我发现运算符需要在类之外定义。是否可以定义这样的对象克隆运算符?


Update2方法定义更清晰few,感谢约书亚


参考

  1. http://www.linux-mag.com/cache/7432/1.html
  2. Ruby 是否像 PHP 一样支持 var 引用?
  3. http://ruby.about.com/od/advancedruby/a/deepcopy.htm

你要求的地方a := b := c := AutoHash.new.few 3我认为(不确定我理解你的愿望)你真的想要a,b,c=Autohash.new.few 3


当您只使用第一个时,为什么很少有变量参数?

我还发现您创建的返回值很令人困惑,也许可以尝试

def few(n=0) 
  Array.new(n) { AutoHash.new } 
end 

除此之外,似乎few应该是一个类方法。a,b,c=AutoHash.few 3如果你在类中定义了一些,那么这将起作用:

def AutoHash.few(n=0)
  Array.new(n) { AutoHash.new }
end

If a,b,c=AutoHash.few 3不是您要找的东西,而您really想要实现自己的运算符,然后查看黑客解析.y,这是 RubyConf 2009 上的一次演讲。您可以在以下网址观看该演示文稿:http://rubyconf2009.confreaks.com/19-nov-2009-17-15-hacking-parsey-tatsuhiro-ujihisa.html您可以在以下位置查看幻灯片:http://www.slideshare.net/ujihisa/hacking-parsey-rubyconf-2009

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

在 Ruby 中使用 new 运算符对自动激活哈希值进行多重初始化 的相关文章

  • 在保存到 Rails 之前将输入转换为整数

    我有一组代表用户生日的选择输入 出生年份 出生月份和生日 我想像这样验证出生年份 validates inclusion of birthyear in gt Date today year 50 Date today year 12 因此
  • 如何使用 Logger.new 创建文件夹(如果不存在)?

    我正在尝试注册一个新日志 my logger Logger new Rails root log my log 但是当我尝试生成新文件夹时 将其放入其中 my logger Logger new Rails root log today t
  • 声明实例变量迭代哈希!

    我想做以下事情 我想声明一个迭代字典的类的实例变量 假设我有这个哈希 hash key1 gt value1 key2 gt value2 key3 gt value3 我想将每个键作为类的实例变量 我想知道我是否可以声明迭代该哈希的变量
  • 如何在rails中使用like子句查询?

    我想在搜索关键字时获得 json 格式的数据 所以我使用 LIKE 子句并像这样查询 select from employees where fname like or mname like or lname like or usernam
  • 带有委托构造函数的构造函数初始化列表执行顺序

    我有一个棘手的 C 问题 当您有一个带有委托构造函数的构造函数初始化列表时 列表执行顺序是什么 这里存在两个相互冲突的标准规则 1 构造函数初始化列表不是按列表顺序执行 而是按项目的声明顺序执行 2 构造函数初始化列表中的委托构造函数总是在
  • 在Ruby编程语言中,$的名字是什么:

    我想了解更多 但我不知道怎么称呼 015 gt gt Users Nerian rvm rubies ruby 1 9 3 rc1 lib ruby site ruby 1 9 1 Users Nerian rvm rubies ruby
  • 正则表达式查找 bcrypt 哈希值?

    我正在寻找使用正则表达式 在 PowerGrep 中 在数据库中查找 bcrypt 哈希字符串 尝试了这个正则表达式 A Za z 0 9 60 但没有找到匹配项 Bcrypt 哈希长度为 60 个字符 以 2y 开头 Example 2y
  • 无主键的 ActiveRecord 模型

    我有一个 ActiveRecord 模型GPA没有主键 class GPA lt ActiveRecord Base end 当我尝试打电话时GPA first to json I get TypeError false is not a
  • 使用rails-Ajax 调用控制器方法?

    我正在尝试从视图中的按钮执行 application controller rb 中的 Ruby 方法 在昨天的一篇文章中 有人告诉我使用 Ajax 调用来执行此操作 因为如果没有它 只会在页面加载时运行 我对此很陌生 很难理解它 我安装了
  • ruby 无法复制 Fixnum

    我有一些这样的代码 ssh files id rsa pub id rsa ssh files each with index do item index ssh files index generate ssh path creator
  • 使用自定义令牌进行 Firebase 身份验证

    我有一个 firebase 项目 我试图从我的 Rails 服务器进行身份验证 按照文档上的说明使用 ruby jwt 库创建自定义令牌 但我不断收到相同的错误 auth invalid custom token 自定义令牌格式不正确 请检
  • const_cast 的奇怪行为[重复]

    这个问题在这里已经有答案了 考虑以下代码 我声明了一个新的引用端 通过 const cast 将其分配给 a 值 然后我只需增加参考值打印地址和值 include
  • 使用正则表达式检查至少 8 位数字的字符串

    我的正则表达式如下 d s 12 这将允许数字 空格 但我想确保字符串至少包含 8 位数字 一些允许的字符串如下 1323 24 233 24243434 43 43435 4554345 434 它不应该允许这样的字符串 1213 232
  • 退出无法在 Heroku 上工作 - 使用 Devise gem 和 Rails 4

    我刚刚对使用 Devise 进行身份验证的 Rails 4 应用程序进行了初始部署到 Heroku 注销可以在本地进行 但 Heroku 返回错误 您正在查找的页面不存在 并且不会注销用户 根据 Heroku 日志和 Google SO 搜
  • 使用 Python 对 CSV 进行 MD5 哈希处理

    我有一个包含电子邮件地址的 csv 需要以 MD5 格式进行哈希处理 然后将哈希后的电子邮件保存为新的 csv 我还没有看到我在 SO 上的确切用例 也无法成功修改现有问题 原始文件路径为 Users username Downloads
  • before_filter set_locale 除了控制器

    My routes rb MyApp Application routes draw do scope locale do all resources here end namespace blog do resources posts o
  • 如何在 Rails 应用程序中选择性地跟踪方法及其文件访问?

    对于 Rails 应用程序 我想重载或修改 Kernel load 以便它打印出完整路径 例如puts gt File expand path File dirname FILE File basename FILE 对于加载的每个 Rai
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • 如何将上传的二进制文件 (ASCII-8BIT) 嵌入 XML (UTF-8) 中?

    我有一个通过常规上传的文件form for 这给了我一个ActionDispatch Http UploadedFile我可以调用的 params 哈希中的对象 read来获取内容 我现在需要将该文件嵌入到 XML 文档中 我现在使用常规
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上

随机推荐

  • SQL 查找和替换字符串的一部分

    我试图在字符串中找到某些文本 catid 18 其中除此之外每个字符串都不同 我之前在下面使用过这个查询 但它似乎只有在您知道整个字符串的情况下才有效 update TABLE NAME set FIELD NAME replace FIE
  • Python:TIFFReadDirectory 警告:带有标签的未知字段

    problem 我可以使用以下命令加载图片Image kivy 中的模块 This这就是我如何安装 kivy 以便我可以查看 TIFF 文件 但现在每次加载 TIFF 图像时 我都会收到一个又一个弹出警告 从而中断程序 TIFFReadDi
  • MVC 3 ninject 自定义成员资格上下文处置错误

    我有一个自定义成员资格 它使用我的 CustomerService 首先使用 EF 代码 4 1 与数据库进行通信 我使用 ninject 将 CustomerService 注入到我的自定义会员资格类中 但是当我尝试验证时 我收到上下文处
  • 嵌套类与单独的类文件

    至少在java中 我的编译器不允许我将两个 或更多 单独的类放在一个类文件中 它迫使我在同一个包中创建多个文件 我明白这是为什么 我也同意这个原则 但是 我意识到我可以轻松地嵌套类并将整个程序 不包括导入的库 包含在单个文件中 我想这会被人
  • 转换为 Dalvik 格式失败 facebook/AccessToken$SerializationProxyV1

    这是我的日志 2013 02 09 19 48 50 Dex Loader Unable to execute dex Multiple dex files define Lcom facebook AccessToken Serializ
  • 是否可以将相同的 DLL 添加两次到 AppDomain 中,或者最好重新使用加载的 DLLC?

    我的应用程序在应用程序执行期间多次加载相同的 DLL AssemblyName assemblyName AssemblyName GetAssemblyName plugin FullPathToDLLFile loadedPlugin
  • 使用 Write-Host 时输出中出现不必要的空间

    当我使用Write Host在一个Foreach Object 我在输出中得到了不必要的空格 write host http contoso com personal ADUserName Output http contoso com p
  • 自定义多色进度条

    我的应用程序要求是自定义进度条 具有多色指示的自定义进度 例如 小于 30 的进度用绿色显示 小于 60 和大于 30 的进度用黄色显示 最后从 60 到 100 的进度用红色显示 我想要这样的进度条 http www android2fr
  • Cesium - 使用相机缩放多边形以在放大/缩小时匹配经纬度位置

    我正在努力解决相机功能 我认为 可以提供一种方法强制我的多边形粘在我房子的顶部缩小 放大和旋转 或相机移动 这个问题遵循较早的question问题已解决 现在我需要一点帮助来解决我的下一个问题 我试图遵循的示例代码位于黄金标准似乎已融入现有
  • 使用 create-react-app 的多个入口点

    我的页面包含 20 的 React 组件和 80 的普通 html 内容 有必要在页面的不同位置放置多个React组件 因此我需要在index html中使用多个入口点 我想使用create react app 但我不想使用redux 因为
  • Magento - 在管理中不可见/不可编辑的产品属性

    是否可以通过代码 或手动 创建通过管理编辑产品页面不可见 因此不可编辑 的产品属性 如何 该属性只需要在php模块中使用 保存 加载 对的 这是可能的 如果您在安装脚本中执行此操作 您应该设置 visible 为假 installer gt
  • 如何建立友谊关系模型

    我一直在试图弄清楚如何做到这一点 即使查看其他示例 我也无法弄清楚 所以也许我可以获得一些个性化的帮助 我有两张桌子users status and friendships In the users status表我有一个字段userid
  • 如何修复React中的map is not a function错误?

    我遇到错误 map is not a function进行 API 调用时 我不久前才开始学习 React 和 API 我尝试将状态更改为对象 但未定义 因为 我得到的地图不是一个函数 也许我缺少调用 API 的东西 这是下面的代码 fun
  • 在ABAP中找到两个数据集的差异?

    我有一组值 foo bar blue 我有一个看起来像这样的表 ID my col 1 foo 2 bar 我想要设置值减去所有可用的 my col 值 foo bar blue 减去 foo bar 结果应该是 蓝色 在ABAP中如何做到
  • Jade Templates - 动态调用 Mixin

    如何使用 json 中的字符串输入 Jade 模板来动态加载 mixin 下面 目标是twoColumn jade加载foo and bar mixins 两列 jade mixin twoColumns obj container flu
  • AngularJS -$compileProvider.preAssignBindingsEnabled 不是一个函数

    我在尝试执行以下操作时收到以下错误消息gulp serve在我的 AngularJS 10 6 1 版 应用程序上 Error injector modulerr Failed to instantiate module myAppName
  • MS-DOS 如何获取命令的输出作为变量

    我编写了一个程序 该程序将 DOS 的键码作为整数返回 但我不知道如何将其输出作为变量 注意 我使用的是 MS DOS 7 Windows 98 所以无法使用FOR F or SET P 有谁知道我该怎么做 Eric Pement 描述了一
  • 如何在转换中使用枢轴点

    如何使用中心点平移对象 我有一个矩形 其中心点远离矩形的位置 当我旋转矩形时 它绕其中心轴旋转 如果我在 modelView 矩阵中旋转之前乘以位置 ModelViewMatrix Rotation Scaling Position 假设我
  • 在 StoryBoard 上设置自定义附加属性

    我有一个故事板 想要设置附加属性 VisualStateUtility InitialState 我尝试过各种组合 但属性从未得到解决 我收到以下错误 无法解析 TargetProperty VisualStateUtility Initi
  • 在 Ruby 中使用 new 运算符对自动激活哈希值进行多重初始化

    我想初始化几个自动激活哈希值通过一行表达式 到目前为止 我找到了一种额外的方法AutoHash object class AutoHash lt Hash def few n 0 Array new n AutoHash new end 这