Rust part10at TECHRust part10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト374:はちみつ餃子 21/04/29 13:12:17.47 x0Vd7BP9.net >>368 dyn かな? 完全に一致する機能というわけではないけど、 Rust ではトレイトに dyn キーワードを付けると (C++ で言うところの) 抽象クラスのように機能する。 375:デフォルトの名無しさん 21/04/29 13:33:28.09 K/HFYMcp.net >>369 https://stackoverflow.com/questions/53897315/rust-polymorphic-calls-for-structs-in-a-vector ↑には、Questionの人の書いたのももしかしたら動作するかも知れないけど Answerの人に従えば、以下のようにするのが正しいのかな? trait Function { fn value(&self, arg: &[f64]) -> f64; } struct Add {} struct Multiply {} impl Function for Add { fn value(&self, arg: &[f64]) -> f64 { arg[0] + arg[1] } } impl Function for Multiply { fn value(&self, arg: &[f64]) -> f64 { arg[0] * arg[1] } } impl Add { fn new() -> Add { Add {} } fn new_boxed() -> Box<Add> { Box::new(Add::new()) } } impl Multiply { fn new() -> Multiply { Multiply {} } fn new_boxed() -> Box<Multiply> { Box::new(Multiply::new()) } } fn main() { let x = vec![1.0, 2.0]; let funcs: Vec<Box<dyn Function>> = vec![Add::new_boxed(), Multiply::new_boxed())]; for f in funcs { println!("{}", f.value(&x)); } } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch