既然Perl开发人员决定对给定/何时语句进行排序,是否有推荐的替代品,除了回到if / elsif / else之外?
答案 0 :(得分:7)
if
/ elsif
/ else
个链是最佳选择 - 除非完全不同的内容优于两者 {{1} } / if
/ elsif
和 else
/ given
,这实际上是经常合理的。 “完全不同”的方法的示例是创建不同类型的对象来处理不同的场景,让方法调度为您完成工作,或者找到使代码更加数据驱动的机会。如果它们合适且你做得对,那么这两者都可以大大减少代码中“switch语句”结构的数量。
答案 1 :(得分:0)
作为补充,我发现如果你有一些需要快速更新的给定/何时/默认代码,'for'和if / elsif / else的组合是好的。只需将given
替换为for
,并将when
语句替换为级联if
& elsif
,并将default
替换为else
。这允许所有测试都隐式使用$_
,需要较少的重写。 (但请注意,其他特殊的智能匹配功能将不再起作用。)
这只是用于重写已经使用给定/何时的代码。为了编写新代码,@ hobbs有正确的答案。