Sum*_*nal 7 module function rakudo raku
我创建了一个名为 的最小工作模块new
。文件夹结构,链接如下:
new\n\xe2\x94\x82 .gitignore\n\xe2\x94\x82 Changes\n\xe2\x94\x82 dist.ini\n\xe2\x94\x82 LICENSE\n\xe2\x94\x82 META6.json\n\xe2\x94\x82 README.md\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80lib\n\xe2\x94\x82 \xe2\x94\x82 new.rakumod\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Desc\n\xe2\x94\x82 \xe2\x94\x82 Mean.rakumod\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Deviation\n\xe2\x94\x82 DeviationMean.rakumod\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80t\n 01-basic.rakutest\n
Run Code Online (Sandbox Code Playgroud)\n我有两个函数,mean
在Desc::Mean.rakumod
和模块中deviation_from_mean
。\n这些是简单的函数,我不想为它们定义任何命名空间。因此,当我安装此模块并尝试将此模块与 一起使用时,我希望能够访问这两个函数而不调用它们的子模块名称。Deviation::DeviationMean.rakumod
lib
use new
我想做的是(现在不起作用)
\nuse new;\n\nmy @test1 = [6,6,4,6,8,6,8,4,4,6,6,8,8,8,8,8,8,4,4,4,4,8,8,8,8,4,4,4,8,6,8,4];\nsay mean(@test1);\nsay deviation_from_mean(@test1);\n
Run Code Online (Sandbox Code Playgroud)\n而不是(有效)
\nuse new;\nuse Desc::Mean;\nuse Deviation::DeviationMean;\n\nmy @test1 = [6,6,4,6,8,6,8,4,4,6,6,8,8,8,8,8,8,4,4,4,4,8,8,8,8,4,4,4,8,6,8,4];\nsay mean(@test1);\nsay deviation_from_mean(@test1);\n
Run Code Online (Sandbox Code Playgroud)\n有没有办法做到这一点?
\n粗略地说,按照文档,您可以将这些方法名称作为导出放入new
命名空间中,如下所示(在 new.rakumod 中):
my package EXPORT::DEFAULT {
OUR::mean := "Desc::Mean::mean";
OUR::deviation_from_mean :=
"Deviation::DeviationMean::deviation_from_mean";
}
Run Code Online (Sandbox Code Playgroud)
# main.raku
use lib 'lib';
use new;
say mean; # 42
# Desc::Mean
unit module Desc::Mean;
sub mean is export { 42 }
# new
sub EXPORT {
{
use Desc::Mean;
return ::.pairs.grep(*.key ne '$_').Map;
}
}
unit module new;
Run Code Online (Sandbox Code Playgroud)
笔记:
sub EXPORT { ... }
模块中的必须new
位于语句之前unit module new;
。
use
Deviation::DeviationMean
根据需要在子中添加其他模块(例如) EXPORT
,以将这些模块的符号导入new
到计算机中;return ::.pairs.grep(*.key ne '$_').Map;
然后,将把所有符号重新导出use
到任何s new
。
对于上述内容的解释请参见:
我对将类的运算符定义分离到其他文件并使用它们的回答中的“将符号导入到包中,然后重新导出它们”部分。
归档时间: |
|
查看次数: |
149 次 |
最近记录: |