您好我是ruby编程的新手。 在我的项目中进行rubocop检查,它说:
方法行太多了。 [13/10] def refresh_status
这是我的方法:
def refresh_status
lost = false
in_progress = false
won = false
@bets.each do |bet|
lost = true if bet.result == :lost
if bet.result == :canceled
@to_return /= bet.odd
won = true
end
in_progress = true if bet.result == :in_progress
won = true if bet.result == :won
end
def_result_after_refresh(lost, in_progress, won)
end
def def_result_after_refresh(lost, in_progress, won)
if lost
@result = :lost
elsif in_progress
@result = :in_progress
elsif won
@result = :won
end
end
找不到简化方法的方法,也许你可以提供帮助?
答案 0 :(得分:1)
您可以使用一些Enumerable
方法。
def refresh_status
@to_return /= @bets.select { |bet| bet.result == :canceled }.map(&:odd).reduce(1, :*)
results = @bets.map { |bet| bet.result == :cancelled ? :won : bet.result }.uniq
@result = case
when results.include?(:lost) then :lost
when results.include?(:in_progress ) then :in_progress
when results.include?(:won) then :won
end
end