文法 - perl 演算子



Perlのインクリメント(++)およびデクリメント(-)文字列 (2)

Perlは私たちにたくさんの施設を提供しています。なぜこの1つではありませんか?

直感的ではないので、範囲内の「最低」の文字に先行する値は何か。 "A" + 1"B""B" + 1"C"なければなりません。 したがって、 "B" - 1"A"なければなりません。 しかし、何が"A" - 1べきですか?

perl -e '$string="a";print ++$string;' 我々はbを得る、
しかし、 perl -e '$string="b";print --$string;' 我々は-1を得る。

だから、なぜ増やすことができないのだろう?

EDITED
"自動減算演算子はperlopによって魔法ではありません"

Perlは私たちにたくさんの施設を提供しています。なぜそうではありませんか? これは批判的なことではありませんが、同様のオペレータにとっては同様の動作が期待されません。 特別な理由はありますか?


Answer #1

perlopはこれが正しいと説明していますが、根拠はありません。

自動インクリメント演算子は、少し余分な組み込み魔法を持っています。 [適用可能な場合、一定の制約を受ける場合、増分は文字列として行われ、その範囲内の各文字を保持し、キャリー[...]

自動減算演算子は魔法ではありません。

-1となるのは、数値として解釈されると、 "b"は先頭の桁がないので0になります(逆に、 "4b"は4に変わります)。





perl