如何创建在条件表达式中计算结果为 false 的 Ruby 变量

发布于 2024-08-19 10:13:39 字数 279 浏览 8 评论 0原文

我想让我的变量(代理对象)在条件句子中使用时评估为 false。我知道我可以使用 .nil?甚至 var == nil 但我认为这还不够好。我想做的是:

if myproxy # not only myprroxy.nil? or myproxy == nil, but just that
  # myproxy's backend object is not nil
else
  # myproxy's backend object is nil
end

有什么想法吗?

I want to make my variable (a proxy object) evaluate to false when used in conditional sentences. I know I can use .nil? and even var == nil but I think that's not good enough. What I am trying go do is to:

if myproxy # not only myprroxy.nil? or myproxy == nil, but just that
  # myproxy's backend object is not nil
else
  # myproxy's backend object is nil
end

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅语花开 2024-08-26 10:13:39

在 Ruby 的布尔上下文中,唯一两个计算结果为 false-ish 值的对象是 nilNilClass 的单例实例)和 falseFalseClass 的单例实例。 每个其他对象都会计算出一个真实值。

如果您希望采用 else 分支,则 myproxy 必须 计算结果为 nilfalse

如果您想要实际控制的布尔型内容,您可以尝试使用 case 表达式并覆盖 case 包含运算符 MyProxy#===

The only two objects that evaluate to a false-ish value in a boolean context in Ruby are nil, the singleton instance of NilClass and false, the singleton instance of FalseClass. Every other object evaluates to a tru-ish value.

If you want that else branch to be taken, then myproxy must evaluate to either nil or false.

If you want something boolean-ish that you have actual control over, you could try a case expression and override the case subsumption operator MyProxy#===.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文