タグ

C3に関するhi-rocksのブックマーク (2)

  • overloadとClass::C3のreinitializeでバグる件 - Unknown::Programming

    詰まったのでメモ。 overloadを使用しているモジュールを継承してClass::C3のreinitialize(initialize)を使うとバグる。Class::C3のバージョンは最新の0.14 package Atest; use overload ( q{fallback} => 1, q{""} => 'str', ); sub str { return 'Atest str'; } package Btest; use Class::C3; use base qw/Atest/; Class::C3::reinitialize(); my $obj = bless {} , 'Btest'; # エラーになる これを実行するとbless時に、 Can't resolve method "???" overloading """" in package "overload" と

    overloadとClass::C3のreinitializeでバグる件 - Unknown::Programming
  • Class::C3, Algorithm::C3 を勉強したよ! - IT戦記

    DBIx::Class を少し使ったことがあったので Class::C3 をなんとなくで理解していたんです。(ふーん幅優先版の NEXT モジュールでしょ?みたいな感じで。) でも、これは絶対にちゃんと細かい挙動まで勉強しといたほうがいいと思いました。 多重継承とか mixin とかに強くなりたいなと C3 C3 というのは Python 2.3 のドキュメントに書いてある MRO(Method Resolution Order 多重継承したときにどんな感じでメソッドを探索するかという順番) を決めるアルゴリズムで。Algorithm::C3 っていうのがそのアルゴリズムの Perl 実装なんです。 それに! Parrot でも使えるみたいだし! ちなみに MRO ってこんな感じね A には add というメソッドがある B にも add というメソッドがある C は A と B を多重継

    Class::C3, Algorithm::C3 を勉強したよ! - IT戦記
  • 1