Spi*_*ion 5 ruby return conditional-statements
如果a = false
并且b = 2
是否有一种简洁的方法来实现这一点?使用只return a unless b
返回 'nil' 而不是 '2'。
我有
def checkit
return a unless b
b
end
Run Code Online (Sandbox Code Playgroud)
这个语句会调用 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
Run Code Online (Sandbox Code Playgroud)
我不知道你为什么存储false
在变量中a
,所以我省略了。据我了解,您想要将一个值传递给 method checkit
,如果其布尔值是true
(这意味着除了 valuenil
和之外的所有内容false
),该方法应该返回该值,否则返回该值。在这种情况下,只需使用这个:
def checkit(value)
value || false
end
checkit(1) # => 1
checkit(false) # => false
checkit('value') # => "value"
checkit(nil) # => false
Run Code Online (Sandbox Code Playgroud)