Kok*_*zzu 8 ruby refactoring return
有没有办法在Ruby上缩短这一行?
if (res = bla_permission_invalid).is_a? String then return res end
Run Code Online (Sandbox Code Playgroud)
上
def something # many things that like this
if (res = bla_permission_invalid).is_a? String then return res end
# do something else
return true
end
Run Code Online (Sandbox Code Playgroud)
当bla_permission_invalid的内容类似的时候
def bla_permission_invalid
return invalid_address_report_func if invalid_address?
return permission_error_report_func if @user.not_one_of? [ :group1, :group2 ]
return nil
end
Run Code Online (Sandbox Code Playgroud)
invalid_adress_report_func并permission_error_report_func返回字符串
如果可能的值为Stringand NilClass,则代码可以简化为:
def something
res = bla_permission_invalid()
return res if res # strings are truthy, so they'll be returned but nil will proceed
# do something else
true
end
Run Code Online (Sandbox Code Playgroud)
def something
bla_permission_invalid || (
# do something else
true)
end
Run Code Online (Sandbox Code Playgroud)