是否有一种明智的方法让一个perl6模块检查另一个perl6模块的存在,并在安装时“使用”它?
像这样的。。。
module Polygons;
if $available {
use Measure; #only if Measure is installed
}
class Rectangle is export {
has $.width;
has $.height;
method area {
$!width * $!height; #provides operator overload for Measure * Measure
}
}
#====================
module Measure;
class Measure is export {
has $.value;
has $.unit;
method Real {
$!value;
}
method Str {
"$!value $!unit";
}
method multiply( $argument ) {
my $result = $.;
$result.value = $!value * $argument;
$result.unit = "$!unit2";
return $result;
}
}
multi infix:<*> ( Measure:D $left, Measure:D $right ) is export {
return $result.multiply( $argument );
}
#====================
#main.p6
use Polygons;
use Measure;
my $x = Measure.new( value => 10, unit => 'm' );
my $y = Measure.new( value => 20, unit => 'm' );
my $rect = Rectangle.new( width => $x, height => y );
say $rect.area; #'200 m2'
其思想是传播操作符重载(中缀:
(请不要拆掉排水管,因为我怀疑总有办法!)
所以这个答案的第一个版本基本上是无用的。
这是我想到的第一个新东西,我理解你的问题是什么。我还没有在回购上尝试过。
在文件a-module.pm6
中:
unit module a-module;
our sub infix:<*> ($l,$r) { $l + $r } }
our
意味着如果我们可以要求
它,我们将能够看到这个例程,尽管它只能通过其完全限定的名称可见
然后在使用文件中:
use lib '.';
try require a-module;
my &infix:<*> = &a-module::infix:<*> // &OUTER::infix:<*>;
say 1 * 2 # 2 or 3 depending on whether `a-module.pm6` is found
如果模块丢失,则使用的默认例程可以是来自外部的例程(如图所示),也可以是来自调用者的例程,或者您喜欢的任何其他伪包。
这个问题/解决方案看起来很基本,我怀疑它一定在SO或文档中的某个地方。我将发布我得到的东西,然后明天探索更多。
我正在进行排序,并希望控制alpha值的cmp不区分大小写(即。https://perl6.org/archive/rfc/143.html). 有没有:我可能是这个的副词?
我的主要模块与设置。格拉德尔: 背景格拉德尔 我的听众: 当我运行我的bootApplication主类时,它会在根构建目录中创建一个eventlistener-. jar文件。但是eventlistener模块没有检查资源文件夹,我猜它没有看到引导应用上下文。也许它应该被收集到一个jar文件?看起来我在gradle构建文件中遗漏了一些东西。
如图,我将framework中的ResponseResult引入到blog中,然后在maven install命令下报错。 blog依赖了framework。是不是因为我两个模块的java下的包名一样导致的,如果是的话,该怎么改呢?
我有三种型号 发票 演播室 R_studio_pay 关系如下 工作室有很多发票 工作室有一个R_studio_pay 我需要发票- 我试着使用whereHas studio- 但无法在何处应用条件。
问题内容: 我试图使用Dagger在正在构建的应用程序上进行依赖注入,当我拥有一个程序包的模块(取决于注入器(可能是另一个模块)提供的值)时,在构造适当的DAG时遇到了麻烦。 如果我有一个用于配置变量的简单模块(例如,我可能想换成测试环境) 而另一个模块依赖于它,例如 我尝试在构造函数中引导注入的行失败,并且它抱怨我没有在适当的模块中指定显式行。 通过反复试验,我发现如果在行中添加,这种情况就消失