#dim
説明
このマクロ・プリプロセッサ指示文は、ローカル変数のデータ型を指定し、必要に応じてその初期値を指定できます。#dim は、コードを記述するための便利なオプションとして提供されています。ObjectScript は型のない言語で、変数のデータ型を宣言することも、#dim で指定されたデータ型を強制することもありません。#dim 指示文は、以下のいずれかの形式で指定できます。
#dim VariableName As DataType
#dim VariableName As DataType = InitialValue
#dim VariableName As List Of DataType
#dim VariableName As Array Of DataType
以下はその説明です。
-
VariableName には、定義する変数、またはコンマで区切られた変数のリストを指定します。
-
DataType は、VariableName のデータ型、つまりクラス名です。
-
InitialValue は、VariableName について必要に応じて指定する値です。これは SET VariableName=InitialValue と同じです。(この構文はリストや配列には使用できません)。
DataType は主に、コード入力をサポートしている IDE で使用されます。
InitialValue
-
VariableName にデータ変数のコンマ区切りのリストを指定し、DataType がデータ型クラスの場合、すべての変数が同じ値を受け取ります。以下に例を示します。
#dim d,e,f As %String = "abcdef"
これは以下と同じです。
SET d = "abcdef" SET e = "abcdef" SET f = "abcdef"
-
VariableName にオブジェクト変数のコンマ区切りのリストを指定し、DataType がオブジェクト・クラスの場合、各変数に別個の OREF が割り当てられます。以下の例では、各変数に別個の OREF が割り当てられます。
#dim j,k,l As Sample.Person = ##class(Sample.Person).%New()
これは以下と同じです。
SET j = ##class(Sample.Person).%New() SET k = ##class(Sample.Person).%New() SET l = ##class(Sample.Person).%New()
ただし、As DataType 修飾を省略した場合 (一般的なユース・ケースではありません)、すべての変数が同じ OREF を受け取ります。
#dim j,k,l = ##class(Sample.Person).%New()
その結果は、以下と同じです。
SET j = ##class(Sample.Person).%New() SET k = j SET l = j
-
VariableName に変数のコンマ区切りのリストを指定し、DataType がダイナミック・オブジェクト・クラスの場合、通常のオブジェクト・クラスの場合と同様に、各変数に別個の OREF が割り当てられます。以下の例では、各変数に別個の OREF が割り当てられます。
#dim m,n,o As %DynamicObject = {"name":"Fred"}
以下の例でも、同様です。
#dim p,q,r As %DynamicArray = ["element1","element2"]
ただし、As DataType 修飾を省略した場合 (一般的なユース・ケースではありません)、通常のオブジェクト・クラスと同様に、すべての変数が同じ OREF を受け取ります。