クラス::訪問者

クラス::テンプレートへの訪問者およびイテレータ拡張
今すぐダウンロード

クラス::訪問者 ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • Perl Artistic License
  • 価格:
  • FREE
  • 出版社名:
  • Ken MacLeod
  • 出版社のWebサイト:
  • http://search.cpan.org/kmacleod/

クラス::訪問者 タグ


クラス::訪問者 説明

クラス::テンプレートへの訪問者およびイテレータの拡張機能 クラス:: visitorは、訪問者とイテレータのデザインパターンを使用するためのメソッドを定義することによって、クラス::テンプレートによって提供されるgetter / setter関数を拡張するPerlモジュールです。すべてのIteratorメソッドはClass :: Iterから継承されます.teclas.classは新しいクラスの名前です。 -iter>このオブジェクトの新しいイテレータを返します。親、配列、および索引が定義されていない場合、新しいイテレータはルートオブジェクトとして扱われます。 Class :: Iterから継承されている場合を除き、または以下に定義されているように、$ ITERと$ OBJのメソッドは同じです。この方法では、最初の引数として$ selfを持つ$ visitorに$ selfを持つコールバックが$ selfを渡し、引数の残りの引数を受け入れるために渡された引数と同じです。これは次のように実装されています.Sub Accept {My $ Self = Shift;私の$ visitor = shift; $ visitor-> visit_myclass($ self、@_); Children_acceptコールは、コンテンツという名前の配列フィールド内の各オブジェクトで受け入れます。 Children_accept_ArrayMemberはArrayMember.Calling IteratorsのAcceptメソッドを常にIteratorsを使用して呼び戻します。非イテレータを使用して承認を呼び出すと、イテレータ以外のコールを呼び出します。後者は、それぞれの配列関数のようなPUSHとPOP ACTです.AS_STRINGは、$ contentsによって変更された配列フィールドの連結スカラー値を返します。 ArrayMember_AS_Stringは、ArrayMember.Visitorでも同じことを、Children_acceptとAS_Stringのためにスペシャルを特別に処理します。 Children_acceptの場合、訪問者はClassクラス:: Scalar :: IterでIteratorを作成します。その場合、CDATA_MAPPERサブルーチンをスカラーと残りの引数で呼び出す結果を返します。実際の実装は次のとおりです。{$ context - > {cdata_mapper}}($ scalar、@_);概要クラス::訪問者を使用します。 visitor_class 'class'、 'super'、{テンプレート}; visitor_class 'class'、 'super'、; $ obj = class-> new(); $ ITER = $ OBJ-> ITER; $ ITER = $ OBJ-> ITER($ PARENT、$ ARRAY、$ INDEX); $ obj-> accept($ visitor、...); $ obj-> children_accept($ visitor、...); $ obj-> children_accept_arraymember($ visitor、...); $ obj-> push_arraymember($ value ); $ value = $ obj-> pop_arraymember; $ obj- >asstring(]); $ obj-> arraymember_as_string(]); $ ITERはクラス:: Iter:$ ITER->親から次のものを継承しています。 $ ITER-> is_iter; $ ITER-> root; $ ITER-> rootPath; $ ITER->次へ; $ ITER-> AT_END; $ ITER-> DELEGATE; $ ITER-> is_same($ obj);要件: ・Perl


クラス::訪問者 関連ソフトウェア