如果您只想干燥,那么您可以使用临时变量:
x = ClassName.method
x.blank? ? false : x
x = PROFESSIONAL_ROLES.key(self.professional_role)
x.nil? ? 948460516 : x
如果您不想使用临时变量,可以使用块:
Proc.new do |x| x.blank? ? false : x end.call(ClassName.method)
Proc.new do |x| x.nil? ? 948460516 : x end.call(PROFESSIONAL_ROLES.key(self.professional_role))
对于您描述的情况(您只想在默认检查失败时使用原始值),编写一个辅助方法很简单:
def x_or_default(x, defval, checker = :nil?)
if x.send(checker) then defval else x end
end
x_or_default(ClassName.method, false, :blank?)
x_or_default(PROFESSIONAL_ROLES.key(self.professional_role), 94840516)
这与描述的方法非常相似||
,但也适用于您的blank?
示例。
我通常对这类事情使用临时变量。