小编Per*_*erC的帖子

类型::微小和深刻的强制

我试图让深刻的强制工作Type::Tiny没有任何成功.从手册中可以说:

"某些参数化类型约束可以自动获取强制,如果它们的参数有强制.例如: ArrayRef[Int->plus_coercions(Num, q{int($_)}) ] ......做你的意思!"

我试图完成的是得到这样的"做我的意思":

package Person;
use Types::Standard -types;
use Moo;

has name => (is => 'ro', isa => Str);

package Family;
use Types::Standard -types;
use Moo;

has members => (is => 'ro', isa => ArrayRef[InstanceOf['Person']]);

package main;

my $family = Family->new(members => [
  'mom',
  Person->new(name => 'dad'),
  Person->new(name => 'girl'),
  'dog'
]);
Run Code Online (Sandbox Code Playgroud)

Family使用元素进行实例化时,Str它们应该被自动强制转换为Person对象.我尝试了一系列不同的想法(plus_coercions,类型库等),没有任何运气.他们都以同样的方式失败.

使用plus_coercions时(从StrObject)

package Family;

has members => (
  is => …
Run Code Online (Sandbox Code Playgroud)

perl moo

9
推荐指数
1
解决办法
348
查看次数

如何在Mojolicious :: Lite应用程序中使用我自己的子程序(全局)

我需要能够在Mojolicious :: Lite应用程序中编写和调用我自己的子例程.但是,这样做的直观方式似乎并不奏效.我通过电子邮件发送了一位比我对此问题有更多Mojolicious经验的同事,他给我发了以下代码:

#!/usr/bin/env perl
use Mojolicious::Lite;

# Documentation browser under "/perldoc"
plugin 'PODRenderer';

get '/' => sub {
  my $self = shift;
  $self->render('index');
};

sub factorial {
    my $n = shift;
    return $n ? $n * factorial($n - 1) : 1;
}

app->start;
__DATA__

@@ index.html.ep
% layout 'default';
% title 'Welcome';
Welcome to the Mojolicious real-time web framework!

Five factorial: <%= main::factorial(5) %>

@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
  <head><title><%= title %></title></head>
  <body><%= content %></body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,它告诉我当我调用一个未定义的子程序时:

未定义的子程序&main :: …

perl subroutine mojolicious mojolicious-lite

8
推荐指数
2
解决办法
1691
查看次数

标签 统计

perl ×2

mojolicious ×1

mojolicious-lite ×1

moo ×1

subroutine ×1