是否可以在Perl 6中重载常量? Here是我正在研究的Perl 5示例。
特别是我想获得一个使用的字面值的字符串,例如如果代码是
my $x = .1e-003 ;
我需要".1e-003"
而不是0.0001
。
答案 0 :(得分:7)
我刚添加了这样一个模块:
https://github.com/FROGGS/p6-overload-constant
用法:
use v6;
sub decimal { $^a.flip }
use overload::constant &decimal;
say .1e-003 # "300-e1."
答案 1 :(得分:3)
您可以通过将适当的角色与but
运算符混合来更改值的字符串形式,即
0.0001 but role { method Str { ".1e-003" } }
可以缩短为
0.0001 but ".1e-003"
请注意,从语义的角度来看,提供方法Stringy
而不是Str
实际上可能更合适,但我不认为Rakudo在今天正确处理这种区别。< / p>
答案 2 :(得分:1)
我认为规范或现有库中不存在overload::constant
之类的内容,但是应该可以使用macros来编写它,方法是在AST中查找您的文字类型感兴趣,并用对象构造函数或任何你需要的东西替换它。