Rust part10at TECHRust part10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト376:デフォルトの名無しさん 21/04/29 17:34:51.47 HuHtKfqb.net C++でis-a関係の継承使うデータはRustだとenum使う方が単純になるケースもある struct AnimalData { ... } struct DogData { ... } struct CatData { ... } #[non_exhaustive] enum Animal { Dog (AnimalData, DogData), Cat (AnimalData, CatData), } この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか) trait使う抽象化が大袈裟だと思ったら考えてみて 377:デフォルトの名無しさん 21/04/29 17:51:11.31 GXfM8nV1.net >>370 継承とは違うけど そのユースケースはfnかFn使えば十分じゃないの? let functions: Vec<fn(f64, f64) -> f64> = vec![|x, y| x + y, |x, y| x * y]; for f in &functions { println!("{}", f(1.0, 2.0)); } 378:デフォルトの名無しさん 21/04/30 01:35:27.25 7VhEvZ/Q.net >>372 簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので そういうこととは趣旨が違う。 さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、 継承的なものを使わずに同じ結果を書けたとしてもそれは違う。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch