【发布时间】:2011-06-27 16:33:30
【问题描述】:
我正在阅读 Damian Conway 的“Perl 最佳实践”,发现以下代码片段:
$have_reconsidered{lc($name)}++;
我试图弄清楚散列在这里发生了什么。我知道++ 在数字上下文中加一,但它对哈希有什么作用?
undef 始终被视为数字, 特别是更改为0 在递增之前(这样一 undef 值的后增量将 返回 0 而不是 undef)。这 自减运算符不是 神奇。
那么在上面的示例中,键 lc($name) 的值是否被初始化为 0,然后由 ++ 递增为 1?
一般来说,我在哪里可以找到更多关于++、+= 等...的行为?
【问题讨论】:
-
声明中,
$hash{key}++,++是对哈希的元素进行操作,而不是哈希本身。%hash++是不允许的。唯一不太明显的一点是,如果$hash{key}不存在,则将其实例化为 0 然后递增。+=会发生这种情况,.=创建一个空字符串并附加到它。