Perl 5の初心者は、この言語には文字列を反転するツールがないと不満を述べています。 逆の機能がありますが、何らかの理由で機能しません:
$ perl -E "say reverse ''"
経験を積んだ後、彼らは解決策を見つけます。 この関数は2つのモードで動作します。 リストコンテキストではリストを反転し、スカラーコンテキストでは次の行を反転します。
$ perl -E "say scalar reverse ''"
残念ながら、これはPerlコンテキストモデルの例外です。 ほとんどの演算子と関数はコンテキストを定義し、その後、このコンテキストでデータが解釈されます。 +および*は数字で機能します。 文字列で動作します。 したがって、シンボル(またはuc型の関数名)がコンテキストを定義します。 逆の場合、これはそうではありません。
Perl 6では、過去の間違いを考慮しました。 したがって、逆の文字列、リスト、および反転ハッシュは分離されます。
ハッシュを反転する場合、結果のタイプは入力のタイプと異なります。 ハッシュの値は必ずしも異なるわけではないため、ハッシュをハッシュに変換すると、データが失われる可能性があります。 したがって、返されるのはハッシュではなく、ペアのリストであり、プログラマーはそれをどう処理するかを決定します。
非破壊的な反転操作を行う方法は次のとおりです。
my %inverse; %inverse.push( %original.invert );
既存のキーとのペアが逆ハッシュ%に追加されると、元の値は上書きされず、配列になります。
my %h; %h.push('foo' => 1);
可能な限り、これらの3つの演算子はすべて、引数を期待する型に変換します。 フリップするリストを渡すと、リストは文字列に変換され、文字列は逆になります。