Rust part10at TECHRust part10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト401:はちみつ餃子 21/05/02 15:50:22.98 VAfyzxcR.net 他の言語の概念と対応付けるよりはそれ自体として理解したほうがいいのは確かだと思う。 (理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。) 言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから 個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。 402:デフォルトの名無しさん 21/05/02 15:58:09.22 TmCNx2ML.net https://doc.rust-lang.org/reference/types/trait-object.html こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど というか俺はこれだと思ってた Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組 403:デフォルトの名無しさん 21/05/02 16:04:49.31 n4dQrb8u.net >>394 C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc) これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど IEnumerable(interface≒trait)を実装してることは分かってるから そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば 目的の動作は果たせることになる このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch