トップページ > プログラム > 2015年07月21日 > Nw2FJ/oz

書き込み順位&時間帯一覧

51 位/163 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000001001



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミング言語 Rust

書き込みレス一覧

プログラミング言語 Rust
359 :デフォルトの名無しさん[sage]:2015/07/21(火) 21:00:10.36 ID:Nw2FJ/oz
論文の5ページの図は菱形継承とは関係無い
むしろ親クラスと子クラスの2階層でも問題があることを示してる
具体的には親クラス同士の連携のために親クラスに連携用のメソッドを追加する必要があること
その連携用のメソッドを子クラスで実装しなければならないことが書かれている
Rustが名前の衝突を許すせいで分かりづらいけど名前の衝突を避ければ>>346は
trait FooA {
 fn foo(&self) { self.FooA_bar1(); self.FooA_bar2(); }
 fn FooA_bar1(&self);
 fn FooA_bar2(&self);
}
となってミックスインする時にFooA_bar1を呼んだらbar1を呼ぶように実装することになる
名前を同じにしようがtrait FooA: Barにしようが実装の数は変わらない
そしてこの連携のための実装は再利用が出来ない
>>348でこの問題の解決方法として>>339を挙げてるからそれを指摘した
別に>>339のエラーを多重継承のせいにしたつもりはない

確かに論文ではトレイト間の階層構造に意味が無いことは書かれていたけど
同時にトレイトはクラスの階層構造に影響しないとも書いてあったはず
クラスとトレイト間では階層構造を作るという解釈はどこから来た?
ここで2階層になってるからさっきの多重継承の問題が出てきた


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。