块局部变量的语法

2024-04-16

我对定义块局部变量的良好风格感到困惑。选择是:

选择A:

method_that_calls_block { |v, w| puts v, w }

选项B:

method_that_calls_block { |v; w| puts v, w }

当我希望本地块具有默认值时,混乱会更加复杂。我感到困惑的选择是:

选项C:

method_that_calls_block { |v, w = 1| puts v, w }

选项D:

method_that_calls_block { |v, w: 1| puts v, w }

是否有关于如何定义块局部变量的约定?

附:也似乎是;当我需要为块局部变量分配默认值时,语法不起作用!奇怪的。


选项 B 无效。 正如 @matt 所指出的 - 这是一个有效的(尽管晦涩)语法(请参见此处:如何在 Ruby 中编写内联块来包含局部变量范围? https://stackoverflow.com/q/22789497/214790)

选项 C 给出默认值w,这是一个常规值,而选项 D 是默认值的语法关键字参数 http://brainspec.com/blog/2012/10/08/keyword-arguments-ruby-2-0/.

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

块局部变量的语法 的相关文章

  • Heroku上传-预编译资产失败

    我需要帮助 当尝试将我的应用程序上传到heroku时 我收到此错误 有人知道为什么吗 有几个是错的 谢谢 Using rake 10 1 0 Using tlsmail 0 0 1 Using uglifier 2 1 2 Your bun
  • 如何在 ruby​​ 中后台运行多个外部命令

    给定这个 Unix shell 脚本 test sh bin sh sleep 2 sleep 5 sleep 1 wait 时间 test sh real 0m5 008s user 0m0 040s sys 0m0 000s 如何在 U
  • Rails 6 + Capistrano - 没有这样的 puma.sock 文件

    拜托 我有一个大问题10多个小时了 每当我使用 Capistrano 和 Puma 在 Rails 中运行应用程序部署并重新启动 nginx 时 当我尝试访问我的 Web 时 我会看到此错误 在此输入图像描述 https i stack i
  • 在 sorbet 中,你能指定一个类型是一个类的后代吗?

    我有一个方法返回一个对象 该对象可能是许多不同类型的对象之一 但它们都是同一祖先类的一部分 精确的对象类型是动态推断的 但是 我对签名中返回值的内容感到困惑 我在下面使用了一个占位符instance of来说明问题 sig params i
  • 带有 case OR 运算的 VB.NET select case 语句逻辑是什么?

    我正在使用一个Or https msdn microsoft com en us library 06s37a7f aspx我的案例表达式中的声明 尽管我有一个在此范围内的值 但它没有找到匹配项 为什么不 示例代码 Select Case
  • 我需要帮助理解 java 中 Timer 类的 ScheduleAtFixedRate 方法

    作为一个粉丝番茄工作法 http www pomodorotechnique com 我正在为自己制作一个倒计时器 以保证我完成作业 然而 这个特定的项目不是家庭作业 Stack 有很多关于使用计时器来控制用户输入之前的延迟等问题 但关于独
  • 在 Ruby 中, put 方法应用到哪个对象?

    在 ruby 中 您使用点来调用方法 或者换句话说 将方法发送到所处理的对象 100 to i 我们正在向对象 100 发送消息 to i 当我们这样做时 puts hello put 方法应用于哪个对象 我是这样想的 self puts
  • 查找所有具有重复名称的用户

    我有具有名字和姓氏字段的用户 我需要做一个 ruby 查找根据名字和姓氏具有重复帐户的所有用户 例如 我想要一个查找功能 可以搜索所有其他用户 并查找是否有任何用户具有相同的姓名和电子邮件 我在想像这样的嵌套循环 User all each
  • 设置 put 的行尾字符

    我有一系列想要打印的条目 Being arr数组 我只是用来写 puts arr 然后我需要使用DOS格式的行尾 r n 所以我写道 arr each e print e r n 这工作正常 但我想知道是否有一种方法可以指定要使用的行尾格式
  • 从命令行将绑定或参数传递给 ERB

    我最近一直在从命令行使用 erb 我想制作一个非常简单的 erb 模板 例如以下内容 Hello My name is I hope your day is 如果我跑的话这有效 erb T thatfile erb 我想做的是name an
  • Ruby:注释“frozen_string_literal: true”有什么作用?

    这是rspecbinstub 在我的项目目录中 usr bin env ruby begin load File expand path spring FILE rescue LoadError end frozen string lite
  • 为什么 split(' ') 试图变得(太)聪明了?

    我刚刚发现以下奇怪的行为String split a tb c nd split gt a b c d a tb c nd split gt a b c d a tb c nd split gt a tb c nd 来源 https git
  • 是否可以使用 Ruby 或 Python 发出禁用锚点/引用的有效 YAML?

    是否可以禁用创建锚点和引用 并有效地显式列出冗余数据 PyYAML或者红宝石的Psych引擎 也许我在网上搜索时错过了一些东西 但似乎可用的选项并不多Psych我无法确定是否PyYAML也允许这样做 理由是我必须序列化一些数据并以可读的形式
  • 在Rails环境中执行Ruby Worker脚本

    我有以下案例 我希望能够将独立的 Ruby 脚本作为守护进程运行 我希望能够在我的 Rails 项目的上下文 环境中执行此脚本 例如 以便该脚本可以访问后端 我的 Rails 模型 有没有一种简单的方法可以实现这一点 Thanks Use
  • 在另一个模块中扩展 Ruby 模块,包括模块方法

    每当我尝试扩展 ruby 模块时 我都会丢失模块方法 include 和extend 都不会执行此操作 考虑一下片段 module A def self say hi puts hi end end module B include A e
  • 验证远程图像实际上是 ruby​​ 中的图像文件?

    我试图弄清楚如何验证我输入载波的内容实际上是图像 我获取图像网址的来源并没有返回所有实时网址 有些图像已不复存在 不幸的是 它并没有真正返回正确的状态代码或任何内容 因为我正在使用一些代码来检查远程文件是否存在并且它通过了该检查 因此 现在
  • 迁移后删除轨道模型

    我觉得很奇怪 创建模型 运行迁移 销毁它 然后再次创建相同的模型会报告 SQL 异常 project master rails g model name name invoke active record create db migrate
  • 在 Ruby 中,哈希中标识符后面的冒号的含义是什么?

    我正在了解 Factory Girl 我看到了这段代码 factory post do association author factory user last name Writely end why do factory and las
  • Gem .gemspec 中的本地依赖关系

    我正在开发一个 gem Gem A 它使用了我也编写的另一个 gem Gem B 到目前为止 Gem B 已添加到 Gem A 的 gemspec 中 gem add dependency gem a gt 0 0 4 但我现在发现需要使用
  • 在 Ruby 中覆盖 BigDecimal to_s 默认值

    当我从数据库表中检索数据时 会填充一个数组 某些字段被定义为小数和货币字段 并且在数组中它们表示为 BigDecimal 我使用这些数组值来填充 CSV 文件 但问题是所有 BigDecimal 值默认都以科学格式表示 这是 BigDeci

随机推荐

  • 指数代码,我不理解代码行为

    这是指数计算的代码 var exponent function a n if n 0 return 1 else return a exponent a n 1 console log exponent 5 3 我不明白这一行 return
  • 预订表中仅允许工作时间

    PostgreSql 9 2 保留表定义为 CREATE EXTENSION btree gist CREATE TABLE schedule id serial primary key during tsrange not null EX
  • 如何根据选择条件将节点集存储在变量中

    我有以下 XML 结构
  • 如何让 NSIS 安装并执行临时目录中的文件?

    我正在使用以下 NSIS 脚本 Name My app wrapper Outfile MyAppSetup exe InstallDir TEMP MyApp Install Function onInit SetSilent silen
  • angularJS如何避免重复http请求

    Angular 有没有办法避免重复 http 请求 正如您在上面的代码中看到的 我正在拨打电话以检索产品的详细信息 事实上 这个调用与一个按钮相关联 我会避免重复打电话 如果我点击了详细产品按钮 显然我不需要再次调用我的服务 正确的方法是加
  • 仅检查新添加的文件

    我使用 lint staged 和 husky 在提交之前对所有暂存文件运行 linter 但我的代码库很旧 所以暂时不想对现有 修改后的 文件运行 linter 有没有办法只针对新创建 添加 的文件运行 linter None
  • 如何为 SQL CLR 存储过程提供 sql_variant 参数?

    如何向 SQL CLR 存储过程添加 sql variant 参数 使用 System Object 不起作用 并且我没有看到任何可以使用的属性 Microsoft SqlServer Server SqlProcedure public
  • 如何使库与调用者脚本 PropertiesService 一起工作?

    直到谷歌将导入 导出 API 扩展到容器绑定的 Apps 脚本项目 https code google com p google apps script issues issues detail id 2922 我已将项目的大部分内容移至可
  • 设置 MKUserTrackingModeFollowWithHeading

    我尝试在 viewDidLoad 方法 和 viewWillAppear 中 设置用户跟踪模式 如果我将其设置为MKUserTrackingModeFollowWithHeading 值为2 则不会生效 实际上 在将其值设置为2后 如果我打
  • 在两个表中使用 OR 条件进行计算

    为了对蓝色产品或属于鞋子类别的产品的销售额求和 我使用以下 DAX 表达式 CALCULATE SUM Table SalesAmount FILTER Table Table Color Blue Table Category Shoes
  • 获取绑定到“value”属性的托管 bean 和类型

    假设我有以下结构 1 托管Bean ViewScoped ManagedBean public class TestBean private Test test getters setters 2 测试类 public class Test
  • Android Room 不接受通用字段类型

    我试图拥有一个基类 其中 id 字段属于通用类型 例如 class BaseEntity
  • 添加使用 javascript 选择的选项

    我希望这个 javascript 在 id mainSelect 的选择中创建 12 到 100 个选项 因为我不想手动创建所有选项标签 你能给我一些指点吗 谢谢 function selectOptionCreate var age 88
  • iOS13更改状态栏背景颜色

    在 iOS13 中 我无法再更改状态栏的背景颜色 因为无法再使用 键的值 访问状态栏 有人知道这是怎么可能的吗 或者是否知道这将在 iOS13 的最终版本中实现 我已经遇到了不同的建议 例如使用 UIApplications StatusB
  • 是否可以在 C++11 之前创建函数局部闭包?

    借助 C 11 我们获得了 lambda 并且可以在我们真正需要的地方 而不是在它们不真正属于的地方 即时创建函数 函子 闭包 在 C 98 03 中 创建函数局部函子 闭包的好方法如下 struct void operator int i
  • Firefox 中的 Html 5 日期选择器

    有什么方法可以设置在带有 HTML 5 的 firefox 版本 21 中启用日期选择器 我不想使用基于 jQuery 的日期选择器 因为将在使用该网站的浏览器中禁用 javascript 日期选择器在 Chrome 上运行良好 因此 如果
  • 删除命名管道.NET

    我使用以下代码列出我的命名管道 private IEnumerable
  • C++/SFML 显示故障,通过鼠标单击更改精灵成员

    我正在学习 C SFML 作为练习 我正在制作一个小程序 在窗口中显示 64x64 像素方形棕色精灵的 10x10 网格 该程序允许您使用键盘选择绿色 黄色 蓝色 灰色 棕色方形精灵 并用该选定的精灵替换所述网格上的任何图块 游戏循环如下
  • 无法将必备组件放在与我的应用程序相同的位置

    我使用 VS 2013 我希望 sql server 2012 express localdb 与我创建安装程序时的应用程序位于同一位置 因此 在项目属性 gt 发布 gt 先决条件中 我选择第二个选项 从与我的应用程序相同的位置下载先决条
  • 块局部变量的语法

    我对定义块局部变量的良好风格感到困惑 选择是 选择A method that calls block v w puts v w 选项B method that calls block v w puts v w 当我希望本地块具有默认值时 混