あな使い方を"定数"としてのハッシュキー Perl?
質問
必要があります。利用を一定として、ハッシューション-キーとは何ですか。
例えば:
use constant X => 1;
my %x = (X => 'X');
上記のコードをハッシュを"X"としてのキーは1しています。一方で、使いたいの価値の定数Xとします。
解決
use constant
実は一定のサブルーチン.
いたいのか、明示的に呼び出す必要はありサブ:
use constant X => 1;
my %x = ( &X => 'X');
または
use constant X => 1;
my %x = ( X() => 'X');
他のヒント
別のオプションでは使用しないでの利用を一定pragmaフを読み取り専用として勧告のPerlベDamian Conway.
切り替え械的風味さん一応前に線路その定数のハッシュrefので、定数の参照のハッシュがないのデータ内のハッシュ.
の読み取り専用書式を"普通のみ"の変数が実際に実施されてconstantnessはreadonlyness.使用できるように、他の変数としてキーとなります。
use Readonly;
Readonly my $CONSTANT => 'Some value';
$hash{$CONSTANT} = 1;
問題は=>はマジックカンマで区切ると自動で見積書の目の前です。で何を書いたのは相当('X'、'X').
最も簡単な方法であるだけではコンマで区切:
my %x = (X, 'X');
または追加することができます各種の句とう点ではありません。簡単な単語の前=>:
my %x = ( X() => 'X' );
my %x = ( &X => 'X' );
使用 $hash{CONSTANT()}
または $hash{+CONSTANT}
防止のためbareword引用メカニズムの解明に始ます。
その他の元にてお答えます。これらは非常に充分な説明に問題をお勧めの回避策.問題は、Perl pragma"使用時でも"本当に作成さ互に現在のパッケージという名前の最初の引数のpragmaがあります。
Perl、型宣言できないときはパー.
ることを理解"定数"でのサブルーチンがきかな補間に文字列と理由を"脂にカンマ"オペレーター"=>"をクォート左の引数えるまでに渡す文字列(みその他の組み込み関数のように時間()でkeys()時の脂肪にカンマを向けています。
幸いにも、呼び出しの定数を明示的に句読点のようなパーは、アンパサンドsigil.
しかし、私の質問に専用に作成する方法もあります。なぜ用定数のハッシュのキーは全くないのでしょうか。
私はを考えることができる少数のシナリオに繋がる可能性があるほかすことで、この方向に向:
したい制御するキーが、ハッシュ.
したい旨の名前のキーの場合これらの変更後
の場合は1番の定数んだハッシュ.代わりに、考えを持つクラスを公開getterおよびsetterかるの移植のハッシュだけが見えるが、そのオブジェクトに対してこの国連-Perlのようなソリューションが非常に簡単ない。
の場合2号、思いを強く提唱のためのクラスです。場へのアクセスのハッシュ規制にどのように定義されたインタフェースの実装側のクラスは、担当のハッシュのキー名です。その場合から利用の定数です。
武器agiは、dexで下がらないboxerぐやります。
の use constant
pragma作型試作について論争することができます。がで 見 のようにC-スタイル定数で、型が定数を返します。
の =>
(脂カンマ)で区切りを自動的に引用符左被演算子がそのbarewordとしては、$のハッシュ{key}表記です。●
ご利用の定数の名前のように見えbarewordの引用のメカニズムの解んだ名前のキーの代わりに値する。これを防ぐために、変更のようなbareword.例えば:
use constant X => 1;
%hash = (X() => 1);
%hash = (+X => 1);
$hash{X()} = 1;
$hash{+X} = 1;
にinitializersきものカンマで区切替り:
%hash = (X, 1);
=>オペレーターを解釈し、その左側としての"文字列"のqw()。
使ってみ
my %x = ( X, 'X');
同封止X(X):
my %x ( (X) => 1 );
別のオプションが古い'=>'および、くことができるようになり:
my %x ( X, 1 );
コメント@shelfoo(評価を受けています。が追加コメントが直接関する詳細を策定したものです。)
全く同意できPerlについて最良の実践によるDamian Conway...そのおすすめです。
しかしをお読みください PBPモジュールの解説推薦 る便利な"誤り"ご利用くださいPBPのための社内スタイルです。