gpt4 book ai didi

ruby - 了解 Ruby 中 If 条件中的 "||"OR 运算符

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:58 25 4
gpt4 key购买 nike

简而言之,为什么以下三行的影响不同?

if @controller.controller_name == "projects" || @controller.controller_name == "parts"

if @controller.controller_name == ("projects" || "parts")

if @controller.controller_name == "projects" || "parts"

第一个给了我想要的结果,但由于实际上有更多的选项而不仅仅是项目和部分,因此使用该表单会创建一个冗长的语句。其他两个更紧凑,但不要给我相同的结果。

最佳答案

|| 的确切语义是:

  • 如果第一个表达式不是 nil 或 false,则返回它
  • 如果第一个表达式为 nil 或 false,则返回第二个表达式

所以您的第一个表达式的结果是,如果 @controller.controller_name == "projects",则表达式短路并返回 true。如果不是,它检查第二个表达式。第二和第三个变体本质上是 if @controller.controller_name == "projects",因为 "projects"|| “部分” 等于 “项目”。你可以在 irb 中试试这个:

>> "projects" || "parts"
=> "projects"

你想做的是

if ["projects", "parts"].include? @controller.controller_name

关于ruby - 了解 Ruby 中 If 条件中的 "||"OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554340/

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