我如何干掉这个 ruby if-then 语句?
how do I DRY out this ruby if-then statement?
我有以下代码,对于我想要它做的事情来说似乎很冗长:
if @initial_that.present?
@that = @initial_that
get_talk_api_response
else
get_talk_api_response
end
看起来我可以让它干燥,但不确定如何。
我确定这个重构有一个计算机科学名称,但你在两个分支中调用 get_talk_api_response,所以把它放在条件之外:
if @initial_that.present?
@that = @initial_that
end
get_talk_api_response
然后让它看起来更像 ruby,根据热门评论:
@that = @initial_that if @initial_that.present?
get_talk_api_response
由于您使用的是 present?
方法,我假设您的代码在 Rails 应用程序中,因此您可以简单地使用 presence
方法:
@that = @initial_that.presence || @that
get_talk_api_response
来自guides:
2.2 presence
The presence method returns its receiver if present?, and nil otherwise.
我有以下代码,对于我想要它做的事情来说似乎很冗长:
if @initial_that.present?
@that = @initial_that
get_talk_api_response
else
get_talk_api_response
end
看起来我可以让它干燥,但不确定如何。
我确定这个重构有一个计算机科学名称,但你在两个分支中调用 get_talk_api_response,所以把它放在条件之外:
if @initial_that.present?
@that = @initial_that
end
get_talk_api_response
然后让它看起来更像 ruby,根据热门评论:
@that = @initial_that if @initial_that.present?
get_talk_api_response
由于您使用的是 present?
方法,我假设您的代码在 Rails 应用程序中,因此您可以简单地使用 presence
方法:
@that = @initial_that.presence || @that
get_talk_api_response
来自guides:
2.2 presence
The presence method returns its receiver if present?, and nil otherwise.