私は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. C#でジェネリックを取得して値を返すにはどうすればよいですか?
- 4. メソッドの戻り値の型をジェネリックにするにはどうすればよいですか?
- 5. System.Windows.Controls.Primitive.PopupRoot型を取得するにはどうすればよいですか?
- 6. ブーストプログラムオプションでデフォルトの引数値を取得するにはどうすればよいですか?
- 7. コントロールのフォントのデフォルト値を取得するにはどうすればよいですか?
- 8. 特定の名前の列挙型で値を取得するにはどうすればよいですか?
- 9. DynamicControlの値を取得するにはどうすればよいですか?
- 10. 匿名型からプロパティの値を取得するにはどうすればよいですか?
- 11. C#で不明な列挙型から値を取得するにはどうすればよいですか?
- 12. Guice:TypeLiteralでラップされたジェネリックのインスタンスを取得するにはどうすればよいですか?
- 13. インスタンス化されたジェネリックのパラメータタイプを取得するにはどうすればよいですか?
- 14. 属性のデフォルト値を返すにはどうすればよいですか?
- 15. ジェネリック型の新しいオブジェクトを作成するにはどうすればよいですか?
- 16. プログラムでデフォルト値のフォルダから文字列を取得するにはどのようにデフォルト値のフォルダ(ロケール)
- 17. クラスプロパティ配列をジェネリック型の異種配列にするにはどうすればよいですか?
- 18. この関数をジェネリック型にするにはどうすればよいですか?
- 19. JavaでC++に「疑問符(?)」ジェネリック型をエミュレートするにはどうすればよいですか?
- 20. ASP.NETでデフォルト以外のProfileBaseへの参照を取得するにはどうすればよいですか?
- 21. roslynでプロジェクトのデフォルトの名前空間を取得するにはどうすればよいですか?
- 22. デフォルトのビューセットでフォルダのabsolute_url_pathを取得するにはどうすればよいですか?
- 23. int型の値を、charなどの同等のジェネリック型のパラメータにキャストするにはどうすればよいですか?
- 24. 値をジェネリック型にキャストできるかどうかを確認するにはどうすればよいですか?
- 25. リストオブジェクトから逆の順序でオブジェクトを取得するにはどうすればよいですか? (POJOクラスオブジェクトのジェネリック型の)私のListオブジェクトで
- 26. 値を入力した後にセルの値を取得するにはどうすればよいですか?
- 27. ジェネリックをループでキャストするにはどうすればよいですか?
- 28. デフォルトのネットワークアダプタのホストのブロードキャストアドレスを取得するにはどうすればよいですか? C#
- 29. JavaでResultSetMetaDataから異なるデータ型を取得するにはどうすればよいですか?
- 30. ジェネリック型のエンティティデータモデルを作成するにはどうすればよいですか?
何を? –
'char.init == '\ xFF''という印象をする価値があります。 –
私はいくつかのタイプが欠けていると思っていましたが、最初の答えを書いたときに何が考えられませんでした。うまくいけば、彼らは今のすべてです。 –