私はD言語を使用しており、default(T)
がC#で動作するのと同様に、ジェネリック型のデフォルト値を取得したいと考えています。これは可能ですか?可能であれば、回避策はありますか?ジェネリック型のデフォルト値を取得するにはどうすればよいですか?
答えて
私はT.init
があなたが探しているかもしれないと思います。
Dの各タイプにはデフォルト値があります。これは、タイプのinit
プロパティを介してアクセスします。 int.init
、float.init
、Object.init
などです。テンプレート型の場合でも、それはまだinit
のプロパティです。たとえば、汎用タイプがT
の場合は、T.init
となります。
init
は、通常、タイプに含まれるエラー値に最も近い値です。整数型の場合は0
です。 bool
については、false
です。浮動小数点型の場合は、NaN
です。文字の種類は\u00FF
です。参照(つまりクラス)とポインタについては、null
です。また、構造体の場合は、そのメンバ変数が直接初期化されている値であれば何でも構いません。例えば
struct S
{
int a = 17;
bool b;
}
S.init
の場合a
17
とb
たfalse
たS
のインスタンスであろう。特に注意すべき点は、init
プロパティの必要性は、Dの構造体にデフォルトのコンストラクタを持たせることができない理由です。それらのデフォルト状態、つまり、そのinit
プロパティは、コンパイル時には知らなければなりませんが、コンストラクタは実行時に実行されるため、structのデフォルト値はコンストラクタで作成できません。コンストラクタは、デフォルトのコンストラクタを持つことができません。
enumの場合、プロパティは列挙型の種類によって異なります。あなたが本当に新しいタイプを作成していないので、このような
enum i = 7;
としてマニフェスト定数は、そのタイプ(この場合はint
)と同じinit
性質を持っているでしょう。ただし、実際に新しいタイプを作成する列挙型の場合(例:
enum E {a = 7、b = 17};
デフォルト値は列挙型の最初の値です。この場合、E.init
はa
となります。
アレイは少し面白くなっています。動的配列と連想配列のinit
プロパティはnull
です。ただし、配列のメモリを静的または動的に割り当てると、各要素はその型のinit
プロパティに初期化されます。したがって、配列の場合、その要素の値はinit
であり、要素の値はinit
です。
いずれの場合でも、型の既定値を取得する一般的な方法はT.init
です。T
は、既定値を - 特定の型またはテンプレートパラメーターにする型です。
再列挙、codepad.orgによると:
enum Foo {
a = 3,
b = 2,
}
import std.stdio;
void main() { writef("%d", Foo.init); }
ができます:列挙型について
しかし、 'writeln(Foo.init)'が '3'ではなく' a'を出力するという事実です。 –
- 1. ジェネリックの内部からクラスの型を取得するにはどうすればよいですか?
- 2. ジェネリック型を文字列表現から取得するにはどうすればよいですか?
- 3. 抽象クラスのジェネリック型を取得するにはどうすればよいですか?
- 4. ジェネリック型を取得して、次のコードを実行させるにはどうすればよいですか?
- 5. Java - ジェネリック型を比較するにはどうすればよいですか?
- 6. ジェネリック型にキャストするにはどうすればよいですか?
- 7. java.lang.reflect.Array.newInstanceのジェネリック型を渡すにはどうすればよいですか?
- 8. C#でジェネリックを取得して値を返すにはどうすればよいですか?
- 9. メソッドの戻り値の型をジェネリックにするにはどうすればよいですか?
- 10. ジェネリック型の型パラメータはどのように取得しますか?
- 11. System.Windows.Controls.Primitive.PopupRoot型を取得するにはどうすればよいですか?
- 12. psqlから値の型を取得するにはどうすればよいですか?このPSQLデータベースで
- 13. ブーストプログラムオプションでデフォルトの引数値を取得するにはどうすればよいですか?
- 14. 列挙型の値を取得するマクロを作成するにはどうすればよいですか?
- 15. コントロールのフォントのデフォルト値を取得するにはどうすればよいですか?
- 16. Guice:TypeLiteralでラップされたジェネリックのインスタンスを取得するにはどうすればよいですか?
- 17. ジェネリック定義と汎用引数からジェネリック型を取得するにはどうすればよいですか? C#ので
- 18. 特定の名前の列挙型で値を取得するにはどうすればよいですか?
- 19. 変数と割り当て/デフォルト値のリストを取得するにはどうすればよいですか?
- 20. 匿名型からプロパティの値を取得するにはどうすればよいですか?
- 21. DynamicControlの値を取得するにはどうすればよいですか?
- 22. C#で不明な列挙型から値を取得するにはどうすればよいですか?
- 23. IntervalIndexで値を取得するにはどうすればよいですか?
- 24. boost :: fusion :: mapで値の型を取得するにはどうすればよいですか?
- 25. インスタンス化されたジェネリックのパラメータタイプを取得するにはどうすればよいですか?
- 26. Typescript型ガードがジェネリック型のコンテキストで動作するにはどうすればよいですか?
- 27. ダーツ角型 - 選択した値のフルパスを取得するにはどうすればよいですか?
- 28. スワッガーパラメータのデフォルト値を与えるにはどうすればよいですか?
- 29. EditTextから値を取得し、int型に変換するにはどうすればいいですか
- 30. メソッドのジェネリックオブジェクトをジェネリックにするにはどうすればよいですか?
何を? –
'char.init == '\ xFF''という印象をする価値があります。 –
私はいくつかのタイプが欠けていると思っていましたが、最初の答えを書いたときに何が考えられませんでした。うまくいけば、彼らは今のすべてです。 –