タグ

perlとOOPに関するpoppenのブックマーク (24)

  • 【Perl】オブジェクト指向 for Java使い - (・∀・)イイ!!Memo

    継承 † Java public SubClass extends SuperClass { SubClass () { } } Perl package SubClass; use base qw(SuperClass); sub new { bless {}, shift; } 1; use base qw(SuperClass?)とすると、SubClass?はSuperClass?の(コンストラクタ含む)関数をすべて継承する。 ↑ interface † Perlにはinterfaceといった文法はない。実装をうまくつかってinterfaceを実現する。 親クラスで、関数の中身をdieだけにし、子クラスでオーバーライドを強制する*1 Java public interface Person { public void whatIsYourName(); } public Clas

  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming

    タイトルは釣りです。 実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。 ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい? Perlのオブジェクト指向ほど、シンプル且つ柔軟なものはないよ! 単なるパッケージ(名前空間)とリファレンス(データ)をblessという関数で紐付けただけのもなんだから。 第一引数に必ず$selfが来るっていうのも結局の話たんなる関数呼び出しとなんら変わらないのだから。 package Foo; sub new { my $class = shift; return bless { @_ } , ref $class || $class; } sub plus { my $self = shift; my $int = shift; return $s

    Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • perl で クラス継承の指定 - end0tknr's kipple - web写経開発

    @ISA or base or parent ? 親クラスからの継承を指定する際は、次のように @ISA に代入していました。 package SubClass; use ParentClass; use vars qw(@ISA); @ISA = qw(ParentClass); plagger では継承を base で実現しているようなので、今後は「base を使おうかなぁ...」と考えていました。先程の例を「use base」で書き換えると、次のようにsrcがスッキリします。 package SubClass; use base qw/ParentClass/; ところが、Catalystでは、parent を使用しているじゃないですか。 use parent qw/Catalyst/; どうやらparentは、perl ver.5.10.0から加わったそうです。また、perldoc

    perl で クラス継承の指定 - end0tknr's kipple - web写経開発
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 2008-05-01 - Yappo::タワシ

    空前のMooseブームが到来してるのでCookbook読んで理解したことを書いた。 Roleについてはdannさんが書いてるので割愛。 http://catalyst.g.hatena.ne.jp/dann/20080501/p1 Moose っつうのは高機能なAccessorが作れる以外にも、親クラスのメソッドの前後に色々hookできたりとか、中にhookしたりとか、java的なinterface定義できたりとかできるよ。 OOPらしいOOPをPerlで実現させるって言われてるけど、Perl的に言うと上の一文じゃないのかな。 他にも何ができるか見てる最中。 今日はMooseネタしか書かないから http://d.hatena.ne.jp/yappo/20080501 をブクマするといいよ。

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Index of /~jkondo/DesignPattern

  • I, newbie » Mooseによるオブジェクト指向Perl

    Mooseは”an extension of the Perl 5 object system”だそうで、なんかすごいらしい。使ってみるとattributeやaccessorの追加も簡単で、型の確認も自動でやってくれてrobustなclassを作るのに便利。attributeがarrayやhashのreferenceだったら、contextに応じて自動的にdereferenceしてくれるとか、extendやoverrideがやりやすいとか、他にもいろいろあるらしい。Mooseは自動的にhash-basedのobjectを作ってくれる。methodを追加する方法も古典的なPerl5のOOPと同じ。 package Foo; use strict; use warnings; use Moose; sub say { my ($self, $str) = @_; print "$str\n";

  • YappoLogs: Perlで数有る$selfを取る手法をベンチマーク取った

    Perlで数有る$selfを取る手法をベンチマーク取った PerlでOOなコード書く時のコンテキストを取る方法は色々あります、最近audreyがselfvarsをリリースしたので、gugodのself.pmとingyのSpiffyそして、既存のmy $self = shift;やshift->や$_[0]->で$selfを取る方法それぞれのベンチマークを取ってみました。 テストコードのモジュール名は、それぞれのモジュールの作者名から取り、既存の手法はYAPC::Asiaでプレゼンした事のある日を代表するPerlな企業のCTOからモジュール名を取らせていただきました。 コードは以下の通りです。 package Audrey; use strict; use warnings; use selfvars; sub new { bless { count => 0 }, shift } sub

  • 第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp

    はじめに はじめまして。大沢と申します。 この連載では、筆者が実装したCPANモジュールのClass::Componentを題材にしつつ、近代的なPerlでのプラガブル(拡張可能)なソフトウェアの実装方法を紹介します。 今回は、Class::Componentの概要を説明します。 連載で使うサンプルアプリケーション 連載では、プラガブルなモジュールを作製するという事を考えて、Gopperというサンプルアプリケーションを元に解説を行ないます。 GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 271 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper サンプルアプリケーションは連載中にも頻繁にupdateされる事が予想されますので、毎回リビジョン

    第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp
  • 404 Blog Not Found:perl - POO と goto

    2007年04月24日00:45 カテゴリLightweight Languages perl - POO と goto というわけで、番。 404 Blog Not Found:perl - 万能なnewの書き方 ここからが面白くなるのだが次のEntryへ譲るここに着目していただきたい。 sub init { my $self = shift; $self->{$_} = $default{$_} for keys %default; $self->SUPER::init(); } 初期化に限らず、自分で何かをしたら次のメソッドに振るというのは、OOでは非常によく見られる光景だ。特にpluginなどを使っている場合、それが著しい。 しかし、このコード、次のメソッドに振っているのはいいのだけど、振ってから戻ってくるのだ。メソッド呼び出しも関数呼び出しに過ぎないのだから、当然といえば当然だ

    404 Blog Not Found:perl - POO と goto
  • 404 Blog Not Found:perl - 万能なnewの書き方

    2007年04月23日22:45 カテゴリLightweight Languages perl - 万能なnewの書き方 Perl 5のOOは、慣れてしまうと簡単だ。 継承とか考えずに、普通にクラスを作りたければ、必要なのは以下の二行だけ。 package Klass; sub new { bless {} }; これだけでは何もできないので、とりあえずnameというアクセサーを追加してみる。これだけ。 sub name { my $self = shift; $self->{name} = shift if @_; return $self->{name}; } しかし、上の形式だと、継承をサポートしていない。だから、 package Klass; sub new { bless {} }; package Klass::Sub; our @ISA = qw/Klass/; # new

    404 Blog Not Found:perl - 万能なnewの書き方
  • Kansai.pm第8回ミーティングで発表しました - LAPISLAZULI HILL#diary

    タイトルは「オブジェクト指向言語Perl」です.無謀にもPerlのオブジェクト指向について発表 発表資料(pdf:5.3M) 発表資料(ppt:1.6M) (pdf重いのでpptの資料も) 疲れた… あと断片の記録→http://d.hatena.ne.jp/lapis25/20070225/1172332463

    Kansai.pm第8回ミーティングで発表しました - LAPISLAZULI HILL#diary
  • perl - Inside-out Object : 404 Blog Not Found

    2007年03月11日03:30 カテゴリLightweight Languages perl - Inside-out Object ところが、そのないはずの隠蔽化を強制する仕組みがすでに発見されているのです。 Perl Best Practices Damian Conway [邦訳:Perlベストプラクティス] ビンゴ中西のほげほげ Kansai.pm第8回ミーティングに行ってきました@荷造り中そして、Perlのオブジェクト指向には 隠蔽化を強制する仕組みはない いつか書こうと思っていたけど、ちょうどいい機会なので。 ここでは例として、name,uriという二つのインスタンス変数を持つオブジェクトを実装してみます。 InsideOut.pm { package InsideOut; use strict; use warnings; my %objects; sub new { my

    perl - Inside-out Object : 404 Blog Not Found
  • Perl 5はCOPでOOOP : 404 Blog Not Found

    2007年01月26日06:00 カテゴリLightweight Languages Perl 5はCOPでOOOP オブジェクトっていつからこんなややこしいものになったのか。 sumim’s smalltalking-tos - オブジェクト指向言語として必須な要素とは何か? ケイ パーソナルコンピューティングに係わるものをメッセージングで表現。 ストラウストラップ 抽象データ型(この文脈ではユーザー定義型を指す)を「クラス」を使って定義。 クック データに持たせる「手続き」によるデータ抽象化手法(対極に「抽象データ型」。ただし、この文脈で「抽象データ型」は、データに持たせる「型」による抽象化手法を指す) 私に言わせれば、オブジェクトの定義は 404 Blog Not Found:オブジェクトは難しくない。難しいのはクラス 自分が何が出来るのかを知っているデータ で必要十分であり、そして

    Perl 5はCOPでOOOP : 404 Blog Not Found
  • Perlメモ/Mooseモジュール - Walrus, Digit.

    [[#rcomment]] 2006-09-09 (Sat) 14:18:38 塚牧生 : あ、そのままシンタックスシュガーで良いんですね!ありがとうございます。文字コードは、pod2htmlしたあとにmetaタグを手書きで追加してみましたが、どうでしょう? 2006-09-09 (Sat) 13:22:30 tokuhirom? : syntactic sugar はシンタックスシュガーなどの方がわかりやすいかもです 2006-09-09 (Sat) 13:19:29 tokuhirom? : HTMLページの文字コードを指定しないと文字化けるです。。。。

  • http://e8y.net/blog/2006/07/06/p124.html