有两个组件:test.mc
我需要调用组件中定义的两个方法name.mi
。
组件/name.mi
<%class>
has 'name';
</%class>
<%method text>
<pre>Some text here</pre>
</%method>
<%method showname>
NAME: <% $.name %>
</%method>
组件/test.mc
<%init>
my $namecomp = $m->load('name.mi', name=>'john');
</%init>
<% $namecomp->text %>
<% $namecomp->showname %>
运行/test.mc
:
- 该
$namecomp->text
方法有效。 $namecomp->showname
NOT 有效,出现此错误:
不能使用字符串 ("MC0::name_mi") 作为 HASH ref 而在访问器 MC0::name_mi::name 中使用“strict refs”(在 /.../testpoet/comps/name.mi 第 2 行定义) 第 5 行
问题:
- 谁能告诉我一个如何正确使用的例子
$m->load($path)
? - 为什么不能访问 from-
$.name
那么showname method
,如何调用name.mi
组件中定义的多个方法呢?
例如,想要实现纯 perl 中可以(示意性地)写成的东西:
package Myapp::Name;
has 'name';
method text() {
print "some text";
}
method showname {
print "Name: " . $self->name();
}
并将其用作:
my $namecomp = Myapp::Name->new( name => 'John' );
$namecomp->text;
$namecomp->showname;