Ruby 中的真值判断
nil 与 false
Ruby 中的真值判断 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是真值?
在条件中,Ruby 不要求严格的布尔值。任何值都会被视为真值或假值。了解这条规则可以避免细微的错误。
if "hello"
puts "Strings are truthy"
end只有两个假值
Ruby 的规则非常简单:只有 false 和 nil 是假值。其他所有值都是真值。
puts "nil is falsy" unless nil
puts "false is falsy" unless false零是真值
与许多语言不同,在 Ruby 中 0 是真值。空字符串和空数组也是如此。如果您之前使用过 C 或 Python,请特别注意。
if 0
puts "0 is truthy in Ruby"
end
if ""
puts "empty string is truthy too"
end认识 nil
nil 表示值的缺失。当没有可返回的内容时,方法通常会返回 nil,例如哈希中不存在指定键时。
user = { name: "Ada" }
puts user[:email].inspect # missing key returns nil检查 nil
请使用 nil? 进行显式测试。它只会对 nil 返回 true。
x = nil
y = 0
puts x.nil?
puts y.nil?&& 运算符
&& 会返回第一个假值操作数;如果所有操作数都是真值,则返回最后一个操作数。它具有短路特性:如果左侧为假值,就不会计算右侧。
puts (nil && "never").inspect
puts ("a" && "b").inspect|| 运算符
|| 会返回第一个真值操作数。因此,它非常适合提供默认值。
name = nil
display = name || "Guest"
puts display条件赋值 ||=
只有当 a 当前为 nil 或 false 时,a ||= b 才会将 b 赋给 a。这是设置默认值的 Ruby 惯用方式。
config = {}
config[:timeout] ||= 30
config[:timeout] ||= 99 # already set, ignored
puts config[:timeout]警惕假值默认值
由于 false 是假值,|| 可能会覆盖有效的 false 值。当 false 具有实际意义时,请改用 nil? 检查。
enabled = false
result = enabled || true # oops, becomes true
puts result
safe = enabled.nil? ? true : enabled
puts safe安全导航运算符
只有当接收者不是 nil 时,&. 才会调用方法;否则它会返回 nil,而不是抛出错误。
name = nil
puts name&.upcase.inspect # no NoMethodError
name = "ruby"
puts name&.upcase综合运用
真值规则可以帮助您编写简洁而富有表现力的代码,但请牢记以下边界情况:
- 只有
nil和false是假值。 0、""和[]都是真值。- 当实际的
false值很重要时,请使用nil?。
values = [0, "", [], nil, false]
values.each do |v|
puts "#{v.inspect} => #{v ? "truthy" : "falsy"}"
end快速检查
测试您对 Ruby 真值规则的掌握程度。
回顾
您已经学习了 Ruby 中的真值规则:
- 只有
nil和false是假值。 nil?会显式检查 nil。&&和||会返回操作数,并具有短路特性。||=用于设置默认值;&.用于防止 nil 接收者。
username = nil
username ||= "anonymous"
puts "Welcome, #{username}"常见问题解答
「Ruby 中的真值判断」课时是免费的吗?
是的 — 「Ruby 中的真值判断」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「Ruby 中的真值判断」这节课中我会学到什么?
nil 与 false 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「Ruby 中的真值判断」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- if、unless、三元运算符
- case/when 表达式
- Ruby 中的真值判断
- 守卫子句