Perl6でオブジェクト指向を復習中
role A { method foo(){ "A".say } } role B { method bar(){ "B".say } } class Foo { does A; does B; } my $x = Foo.new.foo() #->A
まあここまでは当たり前で、次にB#barをB#fooにrenameすると
Method 'foo' collides and a resolution must be provided by the class
となる。ここまでは期待通りなのだが、当然次はresolutionが必要っていうくらいだから明示的に解決する方法があると思うのだがそれがドキュメントを見てもよくわからない。class Fooの定義の中で「Bのfooはb_fooって名前に変更してつかえ」と表明する方法があるはずだと思うのだが…。
関係ないけど、obj.method的なことをするのに:
obj.method(arg) obj."$name"(arg) obj.'$name_with_doller'(arg) obj!"privatefoo"(arg) obj.*foo(arg) # obj.call_all_multimethod("foo", arg) obj.+foo(arg) # obj.call_one_or_more_multimethod("foo", arg) obj.?foo(arg)
カオスすぎる!こんな文法で(学習者の脳は)大丈夫か??