You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby的done_recently?函数在terminatedAt为null时返回值咨询

关于Ruby布尔函数返回值的问题

你调用布尔函数的代码:

can_process = done_recently?(load)

函数定义:

def done_recently?(load)
  time_window = 10000
  load['terminatedAt'] && (load['terminatedAt'] > time_window.minutes.ago.utc.iso8601)
end

当JSON转换为哈希后,load哈希里的"terminatedAt"值为null(对应Ruby中的nil),这个函数会返回false。

原因:

Ruby的&&是短路逻辑与运算符:如果左侧表达式为假值(nil在Ruby中属于假值),会直接返回左侧的值,不会执行右侧的比较逻辑。这里load['terminatedAt']是nil,所以整个表达式直接返回nil,而在布尔判断场景下nil会被当作false处理。

另外你在irb中报错,大概率是10000.minutes.ago这个时间计算的问题,但这不影响当前场景的返回结果——因为短路求值根本不会走到这一步。

内容的提问来源于stack exchange,提问作者Priyanshu0007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:45:41