通常、これら 2 つのオプションのさまざまな組み合わせをランダムに試すだけで、希望する動作を得ることができますが、それらが何をするかを正確に知っているとは言えません。違いを示す具体的な例はありますか?
質問する
1852 次
2 に答える
8
:CaptureArgs(N)
少なくとも N 個の引数が残っている場合に一致します。これは、非ターミナル チェーン ハンドラに使用されます。
:Args(N)
正確に N 個の引数が残っている場合にのみ一致します。
例えば、
sub catalog : Chained : CaptureArgs(1) {
my ( $self, $c, $arg ) = @_;
...
}
sub item : Chained('catalog') : Args(2) {
my ( $self, $c, $arg1, $arg2 ) = @_;
...
}
マッチ
/catalog/*/item/*/*
于 2012-06-20T00:18:00.327 に答える
5
CaptureArgs
Catalyst の連鎖メソッドで使用されます。
Args
連鎖メソッドの終わりを示します。
例:
sub base_method : Chained('/') :PathPart("account") :CaptureArgs(0)
{
}
sub after_base : Chained('base_method') :PathPart("org") :CaptureArgs(2)
{
}
sub base_end : Chained('after_base') :PathPart("edit") :Args(1)
{
}
上記の連鎖メソッドが一致し/account/org/*/*/edit/*
ます。
base_end
チェーンの end メソッドは次のとおりです。チェーン アクションの終了をマークArgs
するためにCaptureArgs
使用されます。使用されている場合は、チェーンがまだ進行中であることを意味します。
Args
メソッドに引数を指定するために、Catalyst の他のメソッドでも使用されます。
cpan Catalyst::DispatchType::Chainedからも:
The endpoint of the chain specifies how many arguments it
gets through the Args attribute. :Args(0) would be none at all,
:Args without an integer would be unlimited. The path parts that
aren't endpoints are using CaptureArgs to specify how many parameters
they expect to receive.
于 2012-06-20T06:47:50.600 に答える