Ruby defined?方法疑问

qichunren · 2025年02月18日 · 最后由 lolychee 回复于 2025年02月18日 · 70 次阅读

在使用 audio-log 时遇到 request 为空的问题(不知道是什么时候 Ruby 版本或者 Rails 升级后遇到的),通过 https://github.com/qichunren/audit-log/commit/49830b66c3707ee4ab11d9ca031459c903ddb14f 解决了,但是不清楚原因。

我通过以下脚本没有复现:

def request 
  puts "a request method"
  1
end

puts "> #{defined?(request)}"

a = "111" 
a = "555" unless defined?(request)
puts "a: #{a}"

unless defined?(request)
  puts "request not defined"
else
  puts "request defined"
end

结果:

> method
a: 111
request defined

问 AI,它一本正经的解决我没有看明白:

不是改成了 respond_to?(:request) 了吗?感觉和 defined?(request) 还是有区别的吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号