避免查找结果出现阴影的 Ruby 方法

标签 ruby

我发现自己在 Ruby 中使用的常见模式如下:

foo = foos.find {|foo| foo.attribute == some_other_attribute }

在检查阴影的 IDE 中,该行提示 foo 正在被阴影。

一个诱人的替代方案如下:

foo = foos.find {|f| f.attribute == some_other_attribute }

但是这种方法破坏了许多 IDE 中的搜索功能 - 在复杂的 block 中搜索 f 将是一场噩梦,而在项目中搜索 foo.attributes将会错过这行代码。

我一直倾向于的丑陋的解决方案只是在变量名前加上它的范围:

foo = foo.find {|block_foo| block_foo.attribute == some_other_attribute }

虽然这对于短 block 来说没问题,但任何更长的 block 都会开始产生大量噪音,因为所有 block_ 都会污染代码。

是否有标准的 Ruby 方式来完成此类任务?具体来说,我正在寻找满足以下条件的解决方案:

  • 变量名称不缩写
  • 变量名称仍然描述它们所包含的对象类型
  • IDE 不会提示影子

最佳答案

我更喜欢让左侧的变量更具描述性:

blue_box = boxes.find { |box| box.color == BLUE }

即使是像 found_foo 这样更通用的东西,我也会认为更具描述性。

关于避免查找结果出现阴影的 Ruby 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866950/

相关文章:

ruby - 如何将 'gets' 输入放入数组?

ruby-on-rails - 如何更改为查看辅助方法?

ruby - 为什么 # 会出现未定义的方法 `xpath'?

ruby-on-rails - Ubuntu 11.10 RVM 安装错误

ruby-on-rails - 一个模型的两个关系上的 ActiveRecord 命名范围

javascript - javascript 中的非阻塞 setTimeout 与 ruby​​ 中的 sleep

ruby - 新的 IRB session 如何获得其变量范围?

ruby - 从 href html 标签中使用 ruby​​ 中的 nokogiri 提取链接(URL)?

ruby-on-rails - 无法在 ruby​​ rspec 中解析哈希

windows - Ruby 键盘事件处理