ObjectScript のデータ型
このページでは、ObjectScript でサポートされているデータ型について説明します。
ObjectScript に型はありませんが、InterSystems IRIS® データ・プラットフォームはクラス・プロパティとテーブル・フィールドの型をサポートし、適用します。一連の広範なデータ型クラスがあり、InterSystems SQL は標準の SQL データ型をサポートしています。
概要
正式には、ObjectScript はタイプのない言語です (変数タイプを宣言する必要はありません)。すべての変数には任意の種類の値を含めることができ、使用法によって値の評価方法が決まります。例えば、5 は数値、文字列、またはブーリアン値として扱うことができます。別の言い方をすると、ObjectScript の変数は、弱く動的に型指定されます。変数が動的に型指定されるのは、変数に対して型を宣言する必要がないためであり、変数は有効な値であればどのような値も取ることができます。変数は、弱く型指定されます。それは、使用法によってそれらの評価方法が決まるためです。
一般的な型
ObjectScript の変数には型はありませんが、一般的な意味で、変数に含めることのできる値の型を分類することは可能です。最も一般的に使用される値の型は、以下のとおりです。
数値とは、必要に応じて先頭のプラス記号やマイナス記号、小数点記号、指数記号を含む数字のセットです。
ObjectScript では、InterSystems IRIS 標準の浮動小数点数 ($DECIMAL 数) または IEEE 倍精度浮動小数点数 ($DOUBLE 数) のいずれかの内部表現で小数を記述できます。
"ObjectScript の数値" を参照してください。
文字列とは、文字、数字、句読点などの文字の組み合わせを、1 組の引用符 (") で囲んだものです。
SET string = "This is a string"
WRITE string
" (二重引用符) 文字の前にもう 1 つ " 文字を置くと、文字列内のリテラルとして引用符を組み込むことができます。
SET string = "This string has ""quotes"" in it."
WRITE string
"ObjectScript の文字列" を参照してください。"文字列長の制限" を参照してください。
ObjectScript には、ネイティブのリスト形式が用意されています。"ObjectScript のリスト" を参照してください。こちらでは、代替案も紹介しています。
ObjectScript には、組み込みの日付タイプはありません。その代わりに、文字列として表される日付値を操作または形式設定するための関数が多数あります。"日付と時刻の値" を参照してください。
特定の ObjectScript 演算子、関数、コマンドは、値をブーリアン値 (True または False) として扱うことができます。
一部の他の言語とは異なり、ObjectScript には、ブーリアン・リテラル値の専用の表現は用意されていません。わかりやすくするために、true の場合は 1、false の場合は 0 を使用します。
"ObjectScript のブーリアン値" を参照してください。
変数には、メモリ内のオブジェクトへのハンドルである OREF を含めることができます。OREF は、オブジェクト値とも呼ばれます。OREF はローカル変数に割り当てることができます。
SET myperson = ##class(Sample.Person).%New()
WRITE myperson
グローバル変数を OREF に代入することはできません。このような割り当てを行おうとすると、実行時エラーが発生します。
"登録オブジェクトを使用した作業" および "永続オブジェクトを使用した作業" を参照してください。
型変換の概要
コンテキストに応じて、文字列が数値として扱われたり、数値が文字列として扱われることがあります。同様に、コンテキストによっては、値がブーリアン (True または False) 値として解釈され、ゼロに評価されるものはすべて False に、それ以外のものはすべて True として処理される場合があります。したがって、文字列値を変数に割り当て、その後同じ変数に数値を割り当てることができます。最適化として、InterSystems IRIS は文字列、整数、数字、オブジェクトに異なる内部表現を使用しますが、アプリケーション・プログラマからは見えません。InterSystems IRIS は、使用されるコンテキストを基にして、変数の値を自動的に変換 (または解釈) します。
以下のテーブルは、InterSystems IRIS での値の変換についてまとめたものです。
変換元 | 変換先 | 規則 |
---|---|---|
数値 | 文字列 | 数値を表す文字列が使用され、前の例では変数 num は 2.2 のようになります。 |
文字列 | 数値 | 文字列の先頭文字は数値リテラルとして解釈されます。これについては、"文字列から数値への変換" で説明しています。例えば、“–1.20abc” は -1.2 と解釈され、“abc123” は 0 と解釈されます。 |
オブジェクト | 数値 | 指定されたオブジェクト参照の内部オブジェクト・インスタンス番号が使用されます。その値は整数です。 |
オブジェクト | 文字列 | n@cls 形式の文字列が使用されます。n は内部オブジェクトのインスタンス番号で、cls は指定されたオブジェクトのクラス名です。 |
数値 | オブジェクト | 不可 |
文字列 | オブジェクト | 不可 |