更改默认的 Ruby 参数

2023-12-24

我想更改传递给 Ruby 函数的默认参数。例如,而不是每次都写

[1,2,3].do_stuff(:option => ' my option ')

我想修改默认值以便我可以编写

[1,2,3].do_stuff

更改默认参数的最简单、最干净、最像 Ruby 的方法是什么?


>> [1, 2, 3].do_stuff
=> Result I get
>> [1, 2, 3].do_stuff :an_option => a_value
=> Result I really want, but don't want to specify the argument

我喜欢用super为了这。除了更改默认参数之外,它还允许我们向方法添加一些功能:

class Array
  def do_stuff(options = {})
     # Verify if caller has not passed the option
     options[:argument_i_want_to_change] = default_value_i_want unless options.has_key? :argument_i_want_to_change
     # call super
     super
  end
end

Result:

>> [1, 2, 3].do_stuff
=> Result that I really want

更新:删除了reverse_merge!依赖性。 (现在正在寻找使用 []= 方法的更好替代方法)

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

更改默认的 Ruby 参数 的相关文章

  • Rails I18n 翻译范围

    编写完全翻译的应用程序可能会变得乏味 有没有办法为当前上下文设置默认翻译范围 示例 我正在部分内容中写入 deadlines html erb in the 显示 html erb我的行动ProjectsController 现在 因为我想
  • 在 Ruby 中的文件中查找并替换

    我有一个用 ruby 编写的小程序 我在这里找到了一段很好的代码 用于查找和替换文件中的某些内容 但它似乎不起作用 这是代码 usr bin env ruby DOC test txt FIND M SEP n make substitut
  • Rails3 SQL 日志记录输出在单独的文件中

    我希望将所有 ActiveRecord SQL 日志记录重定向到不同的文件中 将其放在控制台或 log development log 中有点混乱 怎么做 我希望将其放在 log development sql log 文件中 Thanks
  • 检查数组元素的大小是否相同

    有没有最好 最有效的方法来检查数组元素的大小是否相同 1 2 3 4 5 gt false 1 2 3 4 5 6 gt true 我有什么 def element of same size arr arr map size uniq si
  • Ruby 元编程方法列表?

    刚刚开始学习 Ruby 元编程 看看 Object methods 我得到 Object methods gt allocate new superclass freeze lt gt lt lt gt gt to s included m
  • 正则表达式检查 ruby​​ 中的字母数字字符串

    我正在尝试验证 ruby 中的字符串 任何包含空格 下划线或任何特殊字符的字符串都将无法通过验证 有效字符串应仅包含字符 a zA Z0 9 我的代码看起来像 def validate string regex a zA Z0 9 if s
  • Ruby,通过 SSH 和 LOG 逐一运行 linux 命令

    我想用 Ruby 女巫 net ssh 编写代码 在远程 Linux 机器上一一运行命令并记录所有内容 在 Linux 机器上称为命令 stdout 和 stderr 所以我写函数 def rs ssh cmds cmds each do
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数
  • Ruby 中实现的所有设计模式的备忘单?

    我想知道是否有针对 Ruby 中实现的所有设计模式的备忘单 这样您就不必重新发明轮子 设计模式对于组织大量代码非常有用 因为您不需要像在 verbose algol derivitive language 中那样编写那么多代码来在 ruby
  • 在 Windows 上安装 RMagick

    我对此进行了研究 并且在我的一台计算机上花了几个小时 大约三周前 我在我的台式计算机上安装了 RMagick 它相当复杂 我不记得我采取的具体步骤 我真的很沮丧 我已将 ImageMagick 安装到我的计算机上的目录 C ImageMag
  • 解析包含 json 字符串的 json

    我有一个 json 里面有另一个 json 但它在双引号内 因此它给了我一个解析错误 除了使用之外还有什么方法可以解析这个jsongsub替换双引号 obj Name FirstName Douglas LastName Crockford
  • 安装了 Rails 但它说我没有:)

    我刚刚执行了这个命令来安装 Rails gem install rails 它似乎运行良好并安装了东西 然后当我按照本教程进行操作时 http guides rubyonrails org getting started html http
  • 如何找到 Ruby 应用程序中的性能瓶颈?

    我编写了一个 Ruby 应用程序 它可以解析来自不同格式 html xml 和 csv 文件的源的大量数据 如何找出代码的哪些区域花费时间最长 有没有关于如何提高 Ruby 应用程序性能的好资源 或者您是否有始终遵循的性能编码标准 例如 您
  • sinatra 应用程序在运行时无法启动

    我使用的是 Ubuntu 10 10 Ruby 1 9 2 无论我做什么 我都无法在本地计算机上启动 sinatra 应用程序 你好 rb require sinatra get do Hello World end ruby hello
  • mongoid 中的嵌入文档与哈希数据类型

    我找不到任何讨论此问题的博客文章或文档 它们 嵌入式文档和哈希数据类型 非常相似 彼此相比有何好处或限制 考虑我的架构设计 class HistoryTracker include Mongoid Document include Mong
  • 平衡付款 - 有关获取现有买家和商家账户参考信息的文档

    我如何获得已创建的买家和商家帐户的参考 我只是找到创建买家和商家帐户的示例 我没有找到任何有关获取该信息以供重用的示例 是否有关于此的现有文档或只是 rdoc 中的内容 根据对 rdoc 的引用 我假设您在这里使用 Ruby gem 使用唯
  • Rails:将参数从视图传递到控制器

    我在 Rails 中有以下模型 class Task lt ActiveRecord Base attr accessible description name project belongs to project validates na
  • 从 Rails Helper 返回多个标签的最佳方法是什么?

    我想创建一个隐藏字段并在一个助手中创建一个链接 然后将两者输出到我的 erb 应该输出结果 link to something a path form hidden field something tableize value gt som
  • 匹配一对未转义的平衡分隔符

    如何匹配一对不被反斜杠转义的平衡分隔符 本身不被反斜杠转义 无需考虑嵌套 例如 对于反引号 我尝试了此操作 但是转义的反引号无法按转义的方式工作 regex lt lt hello how are you gt 1 how expected
  • 日期时间到 NSDate

    如何转换字符串2010 11 19T20 00 00Z进入一个NSDate object 我尝试过使用 dateFormatter setDateFormat yyyy MM ddTHH mm ssZ 但看起来我的自定义格式样式错误 PS

随机推荐

  • 如何在不使用 IDE 且不了解程序流程的情况下调试应用程序?

    我正在尝试修改优秀书籍提供的朴素贝叶斯分类器的代码集体智慧编程 https rads stackoverflow com amzn click com 0596529325 使其适应 GAE 数据存储 提供的代码使用 pysqlite2 但
  • django 1.3+ 的简单日志到文件示例

    发行说明说 Django 1 3 添加了框架级别 支持 Python 的日志记录模块 那很好 我想利用这一点 很遗憾文档 http docs djangoproject com en 1 11 topics logging 并没有以完整的工
  • 将图标放置在 div 的右上角

    我创建了这段代码 但我无法将图标放在 valori 类的 div 的右上角 这里是期望的结果 这里的代码 HTML div class circletop div class numberpr 3 anno div div class lo
  • 运行 Firebase 模拟器时出现“确定执行环境时出现意外错误”

    当我部署函数时 一切正常 但使用 Firebase 模拟器在本地运行相同的代码会出现以下错误 message Unexpected error determining execution environment request to htt
  • 表单提交复选框将值设置为“on”而不是“true”

    您好 我有一个 html 表单 我通过按钮上的单击事件提交该表单 该事件触发 myform submit 问题是表单上有一个复选框 并且在发布的参数下的 firebug 中它显示 mycheckbox1 on 而不是预期的 mycheckb
  • 在嵌套元组中查找值

    假设我有 t dog Dog cat Cat fish Fish 我需要检查一个值是否位于嵌套元组的第一位 即小写位 中 我怎样才能做到这一点 大写值实际上并不重要 我只想搜索仅包含小写值的字符串 if fish in t print Fi
  • jspdf AutoTable :表格特定行的目标样式

    我正在为我的表格 pdf 使用 jsPDF AutoTable 插件 我的资料来源 javaScriptIncludeTag jspdf min js javaScriptIncludeTag jspdf plugin autotable
  • 类 CharField() 的参数

    有什么区别CharField name max length 100 and CharField max length 100 参数是什么 name 用于 什么是CharField 构造函数 有人可以给我一个链接吗 CharField 继承
  • 保持geom_rect半透明区域,但彩色轮廓

    我正在尝试使用 R 中的plotly 创建一个带有矩形的交互式绘图 我的主要想法正在发挥作用 然而 我所坚持的是允许每个矩形都有一个彩色轮廓 如数据的 填充 列中所描绘的 但是是一个完全透明的区域 以下是正在运行的 MWE library
  • 收款人不接受以该货币付款

    我正在尝试执行链式付款 其中主要收款人采用英镑 GBP 货币 我是交易的第二接收者 我的帐户设置为美元 但不阻止任何货币 如您所见 以下是确切的错误消息 接收方 不接受此货币的付款 请帮助我理解为什么会失败 我的帐户需要进行其他设置吗 我必
  • 如何找到 CUDA 的 epsilon、min 和 max 常量?

    我正在寻找 CUDA 设备的 epsilon 两个数字之间的最小步长 min 最小量值 和 max 最大量值 的值 即 FLT EPSILON DBL EPSILON FLT MIN DBL MIN 和 FLT MAX DBL MAX 中定
  • GOlang Scanf 错误

    当使用 Scanf 两次时 第一次它会获取用户输入 但第二次它不会并从函数中返回 这只是在 Windows 上运行时才会出现的问题 当我在 Mac 上运行它时 它会按预期工作 首先询问用户的用户名 然后询问他们的密码 下面是问题中的代码 我
  • Swift 可选的 inout 参数和 nil

    是否有可能有一个Optional inoutSwift 中函数的参数 我正在尝试这样做 func testFunc inout optionalParam MyClass if optionalParam 但是当我尝试调用它并通过时nil
  • swi prolog 中的优化

    假设我想找到 argmax x y z 1 2 20x 2 32xy 16y 2 2x 2y 受 x gt 0 y gt 0 z gt 0 且 x y z 0 我知道偏导数设置为 0 是 20x 16y 2 0 和 16x 16y 2 0
  • onCreate 方法内的屏幕截图在 android 中不起作用

    我正在一个 Android 应用程序中工作 我想在重写的方法 onCreate 中捕获当前活动的屏幕 当我在重写的方法 onCreate 中编写用于捕获屏幕的代码时 位图返回 null 但是 当我在同一活动中单击按钮中调用相同的代码时 位图
  • 在Container中挂载目录并与Host共享

    我以为我理解了文档 但也许我没有 我的印象是 v HOST PATH CONTAINER PATH标志是双向的 如果容器中有文件或目录 它们将被镜像到主机上 这使我们即使在删除 docker 容器后也能保留目录和文件 在官方 MySQL d
  • statsmodels wls_prediction_std 的数学背景

    wls prediction std 返回拟合模型数据的标准差和置信区间 我需要知道如何从协方差矩阵计算置信区间 我已经尝试通过查看源代码来解决这个问题 但没能做到 我希望你们中的一些人可以通过写出 wls prediction std 背
  • Android 在 addTextChangedListener (edittext) 中的某些条件下禁用肯定按钮

    这是我的对话框代码 如果编辑文本中的文本大小大于 5 我想禁用肯定按钮 如果大小 private void myDialog String title AlertDialog Builder builder new AlertDialog
  • 归档日志文件时内存不足错误

    我在运行控制台作业时遇到问题 该作业运行并创建我在午夜存档的每日日志文件 这将创建一个第二天的空白日志文件和一个存档文件 其中名称中包含昨天的日期以及旧文件的内容 用于调试我可能遇到但直到第二天才知道的问题 然而 自从我启动 BOT 的工作
  • 更改默认的 Ruby 参数

    我想更改传递给 Ruby 函数的默认参数 例如 而不是每次都写 1 2 3 do stuff option gt my option 我想修改默认值以便我可以编写 1 2 3 do stuff 更改默认参数的最简单 最干净 最像 Ruby