6

既然 Perl 开发人员已经决定某种程度地弃用 given/when 语句,除了回到 if/elsif/else 之外,是否有推荐的替代方法?

4

2 回答 2

7

if//链在大多数情况下是最好的选择——除非完全不同的东西比//和elsif/都好这实际上是相当常见的。“完全不同”的方法的示例是创建不同类型的对象来处理不同的场景,让方法分派为您完成工作,或者寻找机会让您的代码更加数据驱动。如果它们是合适的并且你做对了,这两者都可以大大减少代码中“switch 语句”结构的数量。else ifelsifelse givenwhen

于 2013-10-07T23:47:00.317 回答
0

作为补充,如果您有一些需要快速更新的给定/何时/默认代码,我发现“for”和 if/elsif/else 的组合很好。只需用&的级联替换和替换语句givenfor然后替换为。这允许您的所有测试继续隐式使用,需要更少的重写。(但请注意,其他特殊的智能匹配功能将不再起作用。)whenifelsifdefaultelse$_

不过,这只是为了重写已经使用给定/何时的代码。对于编写新代码,@hobbs 有正确的答案。

于 2013-10-08T07:13:08.610 回答