Ruby - 返回false,除非值为true,在这种情况下返回值

时间:2014-03-21 15:46:46

标签: ruby return conditional-statements

如果a = falseb = 2有简洁的方法可以实现这一目标吗?仅使用return a unless b返回'nil'而不是'2'。

我有

def checkit
  return a unless b
  b
end

这句话会叫b两次吗?

现实案例是:

def current_user
  @current_user ||= authenticate_user
end

def authenticate_user
    head :unauthorized unless authenticate_from_cookie 
end

def authenticate_from_cookie
  .
  if user && secure_compare(user.cookie, cookie)
    return user
  else
    return nil
  end
end

2 个答案:

答案 0 :(得分:4)

试试这个:

 ( b == true ) ? a : false

其中a是您需要返回的值

答案 1 :(得分:1)

我不知道你为什么false存储在变量a中,所以我省略了。据我了解,您希望将值传递给方法checkit,如果其布尔值为true,则应返回该值(这意味着除了值nil和{{1}之外的所有内容}),否则返回值。在这种情况下,只需使用:

false
相关问题