【发布时间】:2013-10-08 15:13:08
【问题描述】:
既然 Perl 开发人员已经决定某种程度地弃用 given/when 语句,除了回到 if/elsif/else 之外,是否有推荐的替代方法?
【问题讨论】:
-
这似乎是一个很好的答案:stackoverflow.com/a/844660/3092394
标签: perl switch-statement
既然 Perl 开发人员已经决定某种程度地弃用 given/when 语句,除了回到 if/elsif/else 之外,是否有推荐的替代方法?
【问题讨论】:
标签: perl switch-statement
if/elsif/else 链在大多数时候是最好的选择 - 除非完全不同的东西比 both if/elsif/@987654326 @ 和 given/when,这实际上是相当频繁的。 “完全不同”的方法的示例是创建不同类型的对象来处理不同的场景,让方法分派为您完成工作,或者寻找机会让您的代码更受数据驱动。这两者,如果它们是合适的并且你做对了,可以大大减少代码中“switch 语句”结构的数量。
【讨论】:
given/when 的令人讨厌的错误时。
作为补充,如果您有一些需要快速更新的给定/何时/默认代码,我发现“for”和 if/elsif/else 的组合很好。只需将given 替换为for 并将when 语句替换为if 和elsif 的级联语句,并将default 替换为else。这允许您的所有测试继续隐式使用$_,从而减少重写。 (但请注意,其他特殊的智能匹配功能将不再起作用。)
不过,这只是为了重写已经使用给定/何时的代码。对于编写新代码,@hobbs 有正确的答案。
【讨论】:
given 中的next 与for 中的next 的行为不同。