以下の内容はhttps://hiratara.hatenadiary.jp/entry/20131105/1383617776より取得しました。


Mouse-1.3でMooseと挙動が違うコード

コンフリクトした場合はスーパークラス側のメソッドが優先されるべきなんだけど、"Hage te nai"が出力される。

package Role1;
use Moose::Role;
sub hage { "Hage te ru" }

package Role2;
use Moose::Role;
sub hage { "Hage te nai" }

package Super;
use Moose;
sub hage { "Dotti demo yoi" }

package Sub;
use Moose;
extends 'Super';
with 'Role1', 'Role2';

package main;
print Sub->new->hage, "\n";
print "Done\n";


以下も挙動が違うけど、overrideのセマンティクスがわからないのでなんとも。Mouseはエラーになるが、その方がありがたい気がする。Moose-2.1005はクラスに生えてるメソッドを優先して"Dotti demo yoi"を出力した。

package Role;
use Mouse::Role;
override hage => sub { "Hage te ru" };

package Sub;
use Mouse;
sub hage { "Dotti demo yoi" }
with 'Role';

package main;
print Sub->new->hage, "\n";
print "Done\n";

前者についてはpull-reqしておいたので、経過はそちらにて。




以上の内容はhttps://hiratara.hatenadiary.jp/entry/20131105/1383617776より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14