$c->forward stuff
Catalyst 的 forward 并不如想象中的那么好。
第一,它不能返回 array, 它只能返回 $scalar
第二,当它返回 undef 的时候,它实际上返回的是一个数值 0
第二是个很奇怪的事,然后我看了看 Catalyst 的代码,发现都是这一句的错。
Catalyst.pm 1121
eval { $c->state( &$code( $class, $c, @{ $c->req->args } ) || 0 ) };
我给他们的 mailing list 发了个消息:http://lists.rawmode.org/pipermail/catalyst/2006-May/007418.html
Yuval Kogman 回复说原因是为了兼容以前的代码。以后会有一个新的 call 方法推出,将支持 array 和返回 undef
而 Perrin Harkins 和 Matt S Trout 建议不要用 forward 而是用普通的 subroutine, 只是将第一个参数 $c 传过去。这也是非常好的一个方法,我可不要钻牛角尖。:)
第一,它不能返回 array, 它只能返回 $scalar
第二,当它返回 undef 的时候,它实际上返回的是一个数值 0
第二是个很奇怪的事,然后我看了看 Catalyst 的代码,发现都是这一句的错。
Catalyst.pm 1121
eval { $c->state( &$code( $class, $c, @{ $c->req->args } ) || 0 ) };
我给他们的 mailing list 发了个消息:http://lists.rawmode.org/pipermail/catalyst/2006-May/007418.html
Yuval Kogman 回复说原因是为了兼容以前的代码。以后会有一个新的 call 方法推出,将支持 array 和返回 undef
而 Perrin Harkins 和 Matt S Trout 建议不要用 forward 而是用普通的 subroutine, 只是将第一个参数 $c 传过去。这也是非常好的一个方法,我可不要钻牛角尖。:)
0 Comments:
Post a Comment
Links to this post:
Create a Link
<< Home