我有n次类似的陈述
if trigger_data.tt_closed
unless trouble_ticket.changes.key?(:status)
@run = 0
break
end
unless trouble_ticket.changes[:status][1] == "Closed"
@run = 0
break
end
end
if trigger_data.tt_assignee
unless trouble_ticket.changes.key?(:assigned_to)
@run = 0
break
end
unless trouble_ticket.changes[:assigned_to][1] == trigger_data.tt_assignee
@run
break
end
end如何重构这些代码?可能是动态语句构建,并将一些散列传递给输入。我是元编程的新手。请给我提个建议
发布于 2012-05-27 07:34:12
好吧,它可能不是你想要的,但是它大大缩短了代码。
另外,我删除了那些key?()方法,因为如果key不存在,它只会传递nil,在Ruby中,nil的意思与if语句的false相同。
为了清楚起见,我把它留在了2个if语句中。:)
changes = trouble_ticker.changes
if trigger_data.tt_closed && changes[:status][1] != "Closed"
@run = 0
break
end
if t = trigger_data.tt_assignee && changes[:assigned_to][1] != t)
@run = 0
break
endhttps://stackoverflow.com/questions/10769841
复制相似问题