TypeDeclaration
TypeDeclaration["Product",name,field1type1,field2type2,… >]
指定の分野における製品型の宣言を表す.
TypeDeclaration["Abstract",name]
抽象的な型 name の宣言を表す.
TypeDeclaration["Alias",name,targetType]
targetType の内部表現を使った型 name の宣言を表す.
TypeDeclaration["Macro",name,targetType]
name のすべてのインスタンスを targetType で置換するように指定する宣言を表す.
詳細とオプション
- TypeDeclarationは宣言の記号表現で,そのままでは評価されない.
- TypeDeclarationは,CompilerEnvironmentAppendToの中で,およびFunctionCompile等の関数の第1引数として使うことができる.
- 次の種類の宣言がサポートされている.
-
"Product" いくつかのフィールドを含む型.Cの構造体に似ている "Abstract" 具体的な型がそのインスタンスであり得る抽象型.型のクラス "Alias" 別の型と同じ内部実装を使う型 "Macro" すべての型に適用される置換規則 - C互換プログラムとインターフェースで接続する場合,次の型宣言は同等である:
- 製品型インスタンス prod のフィールドには prod["field"]でアクセスし,設定できる.
- 次は,サポートされるオプションである.
-
"AbstractTypes" {} 宣言された型を含む抽象型 "Creator" None 宣言された型のインターフェースの作成のために呼び出す関数 "MemoryManaged" Automatic 参照されていないインスタンスを自動的に解放するかどうか "Operations" {} 宣言された型が使用可能な操作 "ReferenceSemantics" Automatic ポインタがある型を内部的に表すかどうか - デフォルトで,"Product"の宣言は"MemoryManaged"Trueおよび"ReferenceSemantics"Trueを含む.
- "ReferenceSemantics"は"Product"宣言についてはTrueにしか設定できない.
- "MemoryManaged"はReference Semanticsを使う"Product"宣言についてはTrueにしか設定できない.
- "Creator"は,"Product"宣言についてしか設定できない.
- "Operations"は,"Product"および"Abstract"の宣言についてしか設定できない.
- "AbstractTypes"は"Macro"宣言については設定できない.
- Cの構造との互換性については, 一般に,製品型を"MemoryManaged"に,"ReferenceSemantics"をFalseに設定しなければならない.
- 製品型のインスタンスであるオブジェクト prod については以下のメソッドが定義されている.
-
prod["field"] "field"の値を得る prod["field"]=val "field"の値を設定する DeleteObject[prod] free prod を解放する(prod がメモリ管理されていない場合のみ)
例題
すべて開くすべて閉じる例 (2)
スコープ (5)
"Abstract" (1)
"Alias" (1)
オプション (11)
"AbstractTypes" (2)
"Creator" (1)
"MemoryManaged" (3)
オブジェクトが自動的に解放されないので,結果の関数にはメモリリークがある:
この型を使いDeleteObjectでこれを解放する関数をコンパイルする:
メモリ管理の製品型には参照数が含まれ,外部プログラムと互換ではない.製品型をライブラリ関数に渡したりライブラリ関数から製品型を受け取ったりする際は,メモリ管理は無効にすべきである.
TypeDeclarationで互換型を表す:
"Operations" (3)
型の例を作成する関数をコンパイルし,別の関数をコンパイルして"Increment"操作を呼び出す:
"Increment"操作を呼び出す.古い値の0が返される:
"Increment"操作を再度呼び出す.古い値は1になった:
操作は抽象型についても定義できる.この場合は,抽象型を実装する任意の型が使用できる.
型の例を作成する関数をコンパイルし,別の関数をコンパイルして"Increment"操作を呼び出す:
"Increment"操作を呼び出す.古い値の0が返される:
"Increment"操作を再度呼び出す.古い値は1になった:
操作の宣言.これは,ForAllTypeを使って多態的に記述されている:
型の例を作成する関数をコンパイルし,別の関数をコンパイルして"Increment"操作を呼び出す:
"Increment"操作を呼び出す.古い値の1が返される:
"Increment"操作を再度呼び出す.古い値は1になった:
これとは異なる方法で操作を実装することができる.これは,実際の型を使って狭義的に宣言されているので,抽象型から与えられたものをオーバーライドする:
"ReferenceSemantics" (2)
TypeDeclarationで互換型を表す:
アプリケーション (1)
テキスト
Wolfram Research (2022), TypeDeclaration, Wolfram言語関数, https://reference.wolfram.com/language/ref/TypeDeclaration.html.
CMS
Wolfram Language. 2022. "TypeDeclaration." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/TypeDeclaration.html.
APA
Wolfram Language. (2022). TypeDeclaration. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TypeDeclaration.html