【问题标题】:What's the recommended replacement for Perl's deprecated-ish given/when?Perl 不推荐使用的给定/何时的推荐替代品是什么?
【发布时间】:2013-10-08 15:13:08
【问题描述】:

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

【问题讨论】:

标签: perl switch-statement


【解决方案1】:

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

【讨论】:

  • 也就是说,建议回到引入'given-when-default'之前使用的编码风格! 我觉得这很令人沮丧,
  • @lexu 更令人沮丧的是,当您遇到来自实验性given/when 的令人讨厌的错误时。
【解决方案2】:

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

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

【讨论】:

  • 还要注意given 中的next 与for 中的next 的行为不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2012-03-03
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多