トップページ > プログラム > 2015年07月15日 > Kkrt7iJt

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

16 位/157 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000100000012



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

書き込みレス一覧

プログラミング言語 Rust
344 :デフォルトの名無しさん[sage]:2015/07/15(水) 16:36:48.46 ID:Kkrt7iJt
本来のトレイトは実装を再利用するための機能であって
使うトレイトの組み合わせを変えるなどして実装を変えられるものだ
普通はトレイトに型システムの機能は無く
トレイト型にキャストとか出来ないし
どのトレイトを使っているのかで区別もしない
ましてトレイトの関数を再実装できるようにしてトレイト型に多態性を持たせるとか
名前が衝突してもトレイト型にキャストすれば別々の実装が呼べるとかすべきでなかった
おかげで本来の使い方が出来なくなった
プログラミング言語 Rust
346 :デフォルトの名無しさん[sage]:2015/07/15(水) 23:54:13.14 ID:Kkrt7iJt
極端な例になるけどこれを見て欲しい
trait FooA {
 fn foo(&self) { self.bar1(); self.bar2(); }
}
trait FooB {
 fn foo(&self) { self.bar2(); self.bar1(); }
}
trait BarA {
 fn bar1(&self) { println!("A-1"); }
 fn bar2(&self) { println!("A-2"); }
}
trait BarB {
 fn bar1(&self) { println!("B-1"); }
 fn bar2(&self) { println!("B-2"); }
}
一般的なトレイトだとFooAとFooBのどちらかとBarAとBarBのどちらかを組み合わせることができる
それがトレイトの再利用
この場合トレイト型で区別しても意味が無い


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