ruby - 一般来说,避免 "undefined method ' some_method' for nil :NilClass"in Ruby

标签 ruby null duck-typing

Ruby 的鸭式打字很棒,但这是它让我很恼火的一种方式。我将运行一些长时间运行的文本处理脚本或某些东西,几个小时后,一些意外的情况最终导致脚本退出 NoMethodError由于变量变成 nil

现在,一旦发生这种情况,通常很容易修复,但如果我能够更好地预测这些错误,或者至少更优雅地处理这些类型的错误,那就更好了。很抱歉问题含糊不清,但这种类型的错误对我来说经常发生,我想知道是否有一个好的方法来避免它。

是否有一些与 Ruby 的此类“类型错误”相关的最佳实践?

最佳答案

查找Design by Contract 。它在许多编程范例中都很有用,但当您没有编译器来帮助您捕获此类错误(禁止参数使用特定类型的值)时,它尤其有用。

本质上,DbC 允许您对参数做出假设。它允许您(除了一个地方之外)跳过保证这一假设成立的普通检查。

关于ruby - 一般来说,避免 "undefined method ' some_method' for nil :NilClass"in Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806605/

相关文章:

ruby - 不能使用数组作为 Ruby Hash 的默认值吗?

Python和字典之类的对象

kotlin - 可空变量和智能转换

sql-server - 这个表达式怎么能达到NULL表达式呢?

python - 游戏设计 - 处理奖金/鸭子类型(duck typing) - python

solid-principles - 什么是被拒绝的遗赠?

ruby - 如何使用 Ruby 和 Rack 为 API 设置 redis?

ruby - 升级到 ruby​​gems 1.8.x 后如何让 `gem` 再次工作?

ruby-on-rails - 我没有收到确认邮件

javascript - 如何修复 document.body is null-error