gpt4 book ai didi

ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用?

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:39 28 4
gpt4 key购买 nike

如果您尝试在 Ruby 中的 nil 对象上调用方法,则会出现 NoMethodError 异常并显示消息:

"undefined method ‘...’ for nil:NilClass"

然而,有一个try Rails 中的方法,如果它被发送到一个 nil 对象,它只返回 nil:

require 'rubygems'
require 'active_support/all'

nil.try(:nonexisting_method) # no NoMethodError exception anymore

那么 try 如何在内部工作以防止该异常?

最佳答案

像 Ruby 中的所有其他对象一样,nil 有一个类 ( NilClass ),它有方法。例如,nil?NilClass 上定义为返回 true,这就是为什么 nil.nil? 不返回 NoMethodError

ruby 中的每个类都可以打开(用新方法更新)。 Rails 打开 NilClass 以添加 try 方法并让它返回 nil(这也是 try 可以链接的原因即使链中的一个步骤返回 nil,因为后续的 nil 响应 try)。

关于ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com