因为-->是perl6中签名中声明返回类型的首选方法,我想知道是否可以将函数签名的代码放入其中C<...>.
例如 C<foo(Int $a --> Bool)>
我正在寻找一种方法将多个值附加到@array.该文档指出,有一个名为.append的方法可以完成这项工作.但是当我做这样的事情时:
my @array = <a b>;
my @values = 1,2,3;
@array.append: @values, 17;
Run Code Online (Sandbox Code Playgroud)
我得到一个嵌套的结果:
[a b [1 2 3] 17]
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个简单的解决方案来保护我的路线与基本认证机制与Cro.在我的例子中,我想看看401 Unauthorized如果你根本不提供任何凭据.如果您提供错误的凭据,我希望看到一个403 Forbidden
在我的代码示例中,我从未看到MyBasicAuth被调用的中间件:
class MyUser does Cro::HTTP::Auth {
has $.username;
}
subset LoggedInUser of MyUser where { .username.defined }
class MyBasicAuth does Cro::HTTP::Auth::Basic[MyUser, "username"] {
method authenticate(Str $user, Str $pass --> Bool) {
# No, don't actually do this!
say "authentication called";
my $success = $user eq 'admin' && $pass eq 'secret';
forbidden without $success;
return $success
}
}
sub routes() is export {
my %storage;
route {
before MyBasicAuth.new;
post -> LoggedInUser $user, …Run Code Online (Sandbox Code Playgroud) 在Perl的每周挑战10号要求我们写来解析罗马数字的实现。
我的解决方案使用reduce。我对Subroutine的尝试有效,但对Block却不起作用。导致失败的区别是什么?
use Test;
my %roman2num =
'I' => 1,
'V' => 5,
'X' => 10,
'L' => 50,
'C' => 100,
'D' => 500,
'M' => 1000;
for test-data().kv -> $roman, $number {
my $r;
$r = $roman.comb().reverse.map({%roman2num{$_}}).reduce(
sub ($sum, $b) {
state $last = $sum;
LEAVE { $last = $b };
return $sum + (($last <= $b)*2-1) * $b;
}
);
is $r, $number, "Roman $roman $r- way 1";
$r = $roman.comb().reverse.map({%roman2num{$_}}).reduce({
state $last …Run Code Online (Sandbox Code Playgroud) 假设有一个模块包含sub MAIN应该提高启动速度的's'.不幸的是我无法以named-anywhere这种方式使用该功能.我的出口是破产还是我应该做什么?
use v6.c;
unit module My::Main;
our %*SUB-MAIN-OPTS is export = ( 'named-anywhere' => True);
multi sub MAIN() is export {
say 1;
}
multi sub MAIN('a', :$pa) is export {
say $pa;
}
Run Code Online (Sandbox Code Playgroud) 我在blob中有一些字节,二进制数据的不可变缓冲区,我正在寻找一种方法将它所包含的内容转换为浮点数据结构Num,因为它是适合所有这3种格式的类.在$ blob中
进行转换的最佳方式是什么?
我正在基于最新的rakudo-star docker图像创建自己的docker图像.我想使用DBIish连接到mysql数据库.不幸的是我无法让DBDish :: mysql工作.
我已经安装了default-libmysqlclient-dev,你可以看到
# find / -name 'libmysqlclient*.so'
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
Run Code Online (Sandbox Code Playgroud)
我面临的错误是:
# perl6 -Ilib -e 'use DBDish::mysql; DBDish::mysql.connect()'
Cannot locate native library 'mysqlclient': mysqlclient: cannot open shared object file: No such file or directory
in method setup at /usr/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 289
in method CALL-ME at /usr/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 539
in method connect at /root/DBIish/lib/DBDish/mysql.pm6 (DBDish::mysql) line 12
in block <unit> at -e line 1
Run Code Online (Sandbox Code Playgroud) 我目前遇到的问题是melezhik在bailador项目的门票中解释过的.https://github.com/Bailador/Bailador/issues/309.我想写一个模块App :: Something是基于Cro的,它应该发送一些文件和文件夹.从这篇文章的评论中,$?RESOURCE将目录内容"扁平化"为单个文件.
您是否明智地了解如何提供模块中提供的文件夹结构的访问权限?
我正在运行一个小型 Docker Swarm,运行一个有 2 个副本的服务。在该服务中,该服务的“task-1”需要与同一服务的“task-2”通信,但我没有找到实现此目的的方法
首先,我想避免将服务设置为主机网络模式,因为这样将其放入集群中就没有什么意义了。
其次,我发现您可以设置一个环境变量,其中包含docker-compose.yml我部署到 swarm 的文件中的 TaskName docker stack deply ...:
environment:
- NODENAME={{.Node.Hostname}}
- NODEID={{.Node.ID}}
- SERVICEID={{.Service.ID}}
- SERVICENAME={{.Service.Name}}
- TASKID={{.Task.ID}}
- TASKNAME={{.Task.Name}}
Run Code Online (Sandbox Code Playgroud)
您可以从各种容器 ping $TASKNAME。但它是不可发现的,因为名称中TASKNAME=e2foobar_yada.gq7ygzvp114q2x3t99lasuowc.e6ncft2k14g9o2u4blvhns19包含的 ID 在您重新启动服务时会发生更改。
我可以设置别名吗?或者有什么方法可以让我进行任务通信吗?