タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

traitとperlに関するkamipoのブックマーク (4)

  • 社内勉強会 - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceなんかじゃないの内容を社内勉強会でやったので、スライドだけ貼っておきます。 slideshareの貼り方ははてなブログでslideshareのプレゼンテーションflashを貼る方法で教わりました。

    社内勉強会 - Pixel Pedals of Tomakomai
  • Moose::Roleのメソッドの競合(2) - 蛇足編 - Pixel Pedals of Tomakomai

    かなり蛇足ですが、昨日のエントリに追記。 「メソッドが競合している」ではなく、「クラス側にメソッドを実装しなさい」と怒られる Traitsの形式的定義によれば、 clashes, i.e., names that are defined in both T1 and T2 , annihilate each other and do not appear in the resulting record. となってますので、重複したメソッドは削除されて合成されることを想定しているようです。じゃあ、なんでこんなエラーになるのかとソースを読むと、 Moose::Meta::Role::Application::RoleSummation にて・・・ foreach my $method (@all_methods) { if (exists $seen{$method->{name}}) { if

    Moose::Roleのメソッドの競合(2) - 蛇足編 - Pixel Pedals of Tomakomai
  • Moose::Roleのメソッドの競合 - Pixel Pedals of Tomakomai

    再びTraits: Composable Units of Behaviorのネタです。 Moose::Roleを使った場合、メソッドの優先順位は 自クラス → Role → スーパークラス ... となりますが、ここで Role だけは複数持てるため、競合がありえます。 以下のTaxとTotalの二つのRoleは、どちらもtotal_priceを持っています。 # 価格から税金計算 package Tax; use Moose::Role requires 'price'; sub tax { my $self = shift; return $self->price * 0.05; } sub total_price { my $self = shift; return $self->price + $self->tax; } no Moose::Role; # 単価から合計計算 pa

    Moose::Roleのメソッドの競合 - Pixel Pedals of Tomakomai
  • 第3回 Moose::Role:役割単位のクラス分け | gihyo.jp

    多重継承しないほうがよい場合 前回は多重継承を利用してクラスを拡張するときにありがちな問題と、そのひとつの解決策を見てきましたが、クラスにいくつかのメソッドを追加したいだけであれば、むしろ継承を利用しないほうがふさわしい場合もあります。 たとえば「コウモリ」というクラスを実装するとき、「⁠乳を出す」というメソッドのために「ほ乳類」というクラスを、「⁠空を飛ぶ」というメソッドのために「鳥類」というクラスを継承するのは――たしかにそれで当座の問題は解決するかもしれませんが――違和感が残ります。 use strict; use warnings; use Test::More tests => 4; package Mammal; sub new { bless {}, shift; } sub produce_milk { print "I can produce milk.\n"; } pa

    第3回 Moose::Role:役割単位のクラス分け | gihyo.jp
  • 1