干掉Ruby三元组

我经常遇到一种情况,我想做一些条件逻辑,然后返回一部分条件.如何在不重复真或假表达式中的条件部分的情况下执行此操作?

例如:

ClassName.method.blank? ? false : ClassName.method

有没有办法避免重复ClassName.method?

这是一个现实世界的例子:

PROFESSIONAL_ROLES.key(self.professional_role).nil? ? 
    948460516 : PROFESSIONAL_ROLES.key(self.professional_role)

解决方法

假设你可以像对待nil一样对待错误,你使用||:
PROFESSIONAL_ROLES.key(self.professional_role) || 948460516

如果key返回nil或false,则返回948460516,否则返回key的返回值.

请注意,如果key返回nil或false,则仅返回948460516,而不是返回空数组或字符串.既然你用的是nil?在你的第二个例子中,我认为没关系.但你用空了吗?在第一个例子中(并且空白?对于空数组和字符串返回true),所以我不确定.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...