使用perl -e '$string="a";print ++$string;'
,我们得到b
,
但是perl -e '$string="b";print --$string;'
我们得到-1
。
那么,如果我们可以增加为什么我们不能减少?
EDITED
“自动递减运算符并不是神奇的”perlop
Perl给了我们很多设施,为什么不给这个?这不是批评,但不会对类似的运营商有类似的行为吗?有什么特别的原因吗?
答案 0 :(得分:27)
perlop(1)解释说这是真的,但没有给出理由:
自动增量运算符有一点额外的内置魔力。 [如果适用,并受某些限制,]增量以字符串形式完成,保留其范围内的每个字符,并带有[...]
自动递减运算符并不神奇。
你得到-1的原因是因为当它被解释为数字时,“b”变为0,因为它没有前导数字(相反,“4b”变成4)。
答案 1 :(得分:8)
至少有三个原因:
答案 2 :(得分:7)
Perl给了我们很多设施,为什么不给这个?
因为不直观的是什么值应该在范围中的“最低”字符之前。 "A" + 1
应为"B"
,而"B" + 1
应为"C"
,这可能是有意义的。因此"B" - 1
应为"A"
。但"A" - 1
应该是什么?