4

Perl 6 で定数をオーバーロードすることは可能ですか? これが私が見ているPerl 5の例です

特に、使用されたリテラル値の文字列を取得したいと思います。たとえば、コードが

my $x = .1e-003 ;

".1e-003"の代わりにが必要です0.0001

4

3 に答える 3

3

but適切な役割を演算子と混合することで、値が文字列化される方法を変更できます。

0.0001 but role { method Str { ".1e-003" } }

に短縮することができます

0.0001 but ".1e-003"

セマンティックの観点からは、Stringy代わりにメソッドを提供する方が実際にはより適切である可能性があることに注意してください。Str

于 2014-11-16T11:17:55.700 に答える
1

仕様や既存のライブラリにそのようなものは存在しないと思いますが、関心のあるリテラルの型を AST で調べ、それをオブジェクト コンストラクターに置き換えることで、マクロoverload::constantを使用して記述できるはずです。またはあなたが必要とするものは何でも。

おそらく、プログラム全体を 1 つのマクロでカバーするのではなく、これらの定数をそれぞれ 1 つのマクロ呼び出しでラップする方がクリーンです。

于 2014-11-15T19:26:19.210 に答える