gpt4 book ai didi

ruby - Ruby "||" "or"有问题吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:34 24 4
gpt4 key购买 nike

开始的 Ruby 问题:

我正在尝试查看字符串变量的内容是“个人”、“电子邮件”还是“密码”。

我正在尝试:

if params[:action] == "password" || "email" || "personal"
foo
else
don't foo
end

但这不起作用并返回奇怪的结果,并且使用 IRB 来处理“或”语句我不知道为什么会发生以下情况:

irb(main):040:0> a = "email"
=> "email"
irb(main):041:0> a == "password" || "email"
=> "email"
irb(main):042:0> a == "email" || "password"
=> true

我只想要一些东西,如果 3 个变量中的任何一个为真,无论它们在什么顺序中,它都返回 true,否则返回 false。有人想帮助这个 n00b 吗?

最佳答案

This specific problem will have many good solutions, but instead I will concentrate on the boolean logic for educational purpose

你会想要这样做:

(a == "password") || (a == "email) || (a == "password")

编程语言不像英语:它有严格的语法规则,而不是说:

"if x is 3 or 5"

大多数编程语言中,您必须说:

if x is 3 or x is 5

同样,在数学符号中通常表示:

"if a < b < c"

大多数编程语言中,您必须说:

if a < b and b < c

让我们看看您的实验会发生什么:

 a == "password" || "email"

由于所谓的“运算符优先级”,这被解析为:

 (a == "password") || "email"

现在,由于 a == "email",这基本上计算为:

 false || "email"

这就是为什么此表达式的计算结果为 "email"

类似地,有:

 a == "email" || "password"

本质上是

 true || "password"

这就是为什么它的计算结果为 true

关于ruby - Ruby "||" "or"有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816021/

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