Created
January 13, 2022 12:09
-
-
Save ikyhtr/1ed1d300f8cd53032680e9121417ad25 to your computer and use it in GitHub Desktop.
ジェネリクスの基礎概要
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 具象型 A | |
struct A; | |
// A より先に <A> がない。 | |
// また、A は具象型である。 | |
// よって Single も具象型になる。 | |
struct Single(A); | |
// T よりも先に <T> が使用されている。 | |
// よって型パラメータ T はジェネリック型である。 | |
struct SingleGen<T>(T); | |
fn main() { | |
// Single は具象型であり、 | |
// A のみを受け取れる。 | |
let _s = Single(A); | |
// 束縛できる型が明示的に指定されている。 | |
// この変数はSingleGen の <char> のみ束縛できる。 | |
let _char: SingleGen<char> = SingleGen('a'); | |
// 変数が SingleGen 型なら、 | |
// 型を指定しなくてもいい。 | |
let _t = SingleGen(A); // A を使用 | |
let _i32 = SingleGen(6); // i32 を使用 | |
let _char = SingleGen('a'); // char を使用 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment