为什么Perl中不推荐使用Switch模块?

Lou*_*ise 18 perl module switch-statement

为什么在Perl 5.12中不推荐使用Switch模块?

我知道这是和switch/ case有关elsif,但我不太喜欢.

Que*_*tin 24

Perl 5.10引入了一个名为given-when的真正开关

旧的Switch使用了源过滤,还有其他限制.

  • @OMG Perl的`given`和`when`操作符实际上并没有像其他语言的`switch` /`case`那样,因此它们被赋予不同的名称. (15认同)
  • @OMG,我主要在Perl 5.8工作,但IIRC你可以使用`for` /`when`构造.`for` /`case`似乎很奇怪. (3认同)
  • 我更希望Perl放弃`given` /`when`关键字并使用更类似的其他语言......比如`switch` /`case`.我会说那些不是"霍夫曼编码"(Larry的短语来自Perl 6 Apocalypse 3),但它们的长度相同...... (2认同)

bri*_*foy 17

原来的Switch使用源过滤器来完成它的工作,这通常是一个坏主意.从本质上讲,它会预处理您的文字源,以便在perl编译之前创建新代码.该模块从来没有真正意图被大量使用,它更像是一个概念证明,可以找出真正的Perl功能的样子.

Perl 5.10添加了given-when构造来完成大多数人想要的构造switch-case,但它确实做了很多.学习Perl,第5版将整个章节与智能匹配结合起来.然而,在Learning Perl第7版中,我们删除了该章,因为智能匹配是从v5.18开始实验的.

你不能given-whenif-elsif-else构造创建一个Perl .given-when允许您执行多个块,以及添加插页式代码.只if-elsif-else执行一个分支.