0Pricing
Ruby Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. if、unless、三元运算符
  2. case/when 表达式
  3. Ruby 中的真值判断
  4. 守卫子句
← 返回 Ruby Academy