|
|
1
4
不管你能用它做什么
我没有分析你的代码以确保它们是完全相同的,但是看起来你对
我从来没有真正理解过
switch语句
. 这是Perl编码人员经常抱怨的问题——缺少
switch语句
在Perl中。也许这是大多数Perl开发人员都很喜欢记住的C语言。但我从没找到
真正让我困惑的是,当他们最终实现
switch语句
,他们没有这么叫
为什么
还有,为什么
不过,这种宋飞式的抱怨已经够多了。。。 作为 davorg 在不存在的哈希密钥、存在的哈希密钥、但未定义的哈希密钥和定义的哈希密钥之间存在很大差异: 例如:
你可以看到
但是,如果我这样做:
第一次
如果我这么做了:
我喜欢简单地说:
因为它又短又甜,而且可能是我想要的。但是,我必须理解哈希中的密钥存在性的差异,评估
如果我的文件中有空行,它将返回
|
|
|
2
4
你所谓的“固定”版本现在在代码的两个版本中做了不同的事情。检查散列中是否存在一个键,与检查关联的值是否为真是完全不同的。 从散列中可以得到三个不同的真值:密钥是否存在于散列中,是否关联的值被定义,关联的值是否为真或假。此代码应说明三者之间的区别:
|
|
|
3
1
当我刚刚意识到真正的问题是什么时,我又补充了一个答案。 你的“when($SpecialKey{$c})”等同于“if($\~$SpecialKey{$c})”。而且由于“given”将$设为$c,这与“if($c~~$SpecialKey{$c})”相同。当比较两个标量值时(我假设这就是我们在这里得到的),smart match操作符会查找数字值,并根据需要使用“eq”或“==”。 因此,您的代码实际上相当于“if($c==$SpecialKey{$c})”。这与“if($SpecialKey{$c})”完全不同。 |
|
4
0
他们表现完全平等。 |
|
|
5
0
给定/何时具有隐式智能匹配:
我不认为如果/否则会那样做(?) 见 perlsyn 编辑: 我猜这在使用given/when the way OP时并不重要,但它仍然回答了这个问题:) |
|
|
Bunyamin Erkaya · 使用开关输入后立即断开,或者如果 2 年前 |
|
|
Ettapp · switch语句中的类型保护类 2 年前 |
|
|
user23760512 · 所欠所得税的计算不正确 2 年前 |
|
|
Johnml · 将if-else语句转换为Switch语句 2 年前 |
|
Piotr Siupa · 如何在switch语句中使用太空船操作员 2 年前 |
|
|
Sybe · 将输入转换为数字的方法不起作用[重复] 2 年前 |