記事ディレクトリ
第 5 章 オブジェクトスクリプト
メソッドとルーチンはどちらも を使用して作成できますObjectScript
が、最新のコードのほとんどはメソッドを使用して作成されます。メソッドはクラスに含まれるため、同様のメソッドをグループ化したり、クラス参照でドキュメントを自動生成したり、 のIRIS
オブジェクト指向機能を使用したりできます。
routines
これはそれが重要ではないという意味ではありません。多くの便利なシステム ユーティリティはルーチンとして記述されており、クラスがコンパイルされるときにルーチンが生成されます。
サンプルクラス
User.DemoClass
以下に、 で記述されたメソッドを含む名前のサンプル クラスを示しますObjectScript
。ObjectScript
この例では、いくつかの一般的なコマンド、演算子、関数を確認し、メソッド内でコードがどのように構成されているかを確認することができます。
Class User.DemoClass
{
/// Generate a random number.
/// This method can be called from outside the class.
ClassMethod Random() [ Language = objectscript ]
{
set rand=$RANDOM(10)+1 ; rand is an integer in the range 1-10
write "Your random number: "_rand
set name=..GetNumberName(rand)
write !, "Name of this number: "_name
}
/// Input a number.
/// This method can be called from outside the class.
ClassMethod Input() [ Language = objectscript ]
{
read "Enter a number from 1 to 10: ", input
set name=..GetNumberName(input)
write !, "Name of this number: "_name
}
/// Given an number, return the name.
/// This method can be called only from within this class.
ClassMethod GetNumberName(number As %Integer) As %Integer [ Language = objectscript, Private ]
{
set name=$CASE(number,1:"one",2:"two",3:"three",
4:"four",5:"five",6:"six",7:"seven",8:"eight",
9:"nine",10:"ten",:"other")
quit name
}
/// Write some interesting values.
/// This method can be called from outside the class.
ClassMethod Interesting() [ Language = objectscript ]
{
write "Today's date: "_$ZDATE($HOROLOG,3)
write !,"Your installed version: "_$ZVERSION
write !,"Your username: "_$USERNAME
write !,"Your security roles: "_$ROLES
}
}
次の点に注意してください。
Random()
Input()
メソッド呼び出しメソッドはGetNumberName()
、このクラスのプライベートメソッドであり、クラス外から呼び出すことはできません。WRITE
、、、、QUIT
はSET
コマンドREAD
です。この言語には、変数の削除、プログラム フローの制御、デバイスの制御I/O
、トランザクション (おそらくネストされた) の管理などを行うための他のコマンドも含まれています。
コマンド名は大文字と小文字を区別しませんが、慣例により実行テキストではすべて大文字で表示されます。
- この例には 2 つの演算子が含まれています。プラス記号 (
+
) は加算を実行し、アンダースコア (_
) は文字列の連結を実行します。
ObjectScript
一般的に使用される演算子と、他の言語では見られないいくつかの特殊な演算子を提供します。
$RANDOM
、$CASE
および は$ZDATE
関数です。
この言語は、文字列操作、さまざまな変換、書式設定操作、数学的操作などの関数を提供します。
$HOROLOG
、$ZVERSION
、$USERNAME
および は$ROLES
システム変数です (IRIS
では特殊変数と呼ばれます)。ほとんどの特殊変数には、IRIS
動作環境、現在の処理ステータスなどの値が含まれています。ObjectScript
コメント行、ブロック コメント、ステートメントの末尾のコメントがサポートされています。
このクラスのメソッドをターミナルでデモンストレーションとして実行できます。これらの例では、<TESTNAMESPACE>
ターミナルに表示されるプロンプトです。同じ行のプロンプトに続くテキストは、入力されたコマンドです。その後の行は、システムが応答として端末に書き込む値を示しています。
TESTNAMESPACE>do ##class(User.DemoClass).Input()
Enter a number from 1 to 10: 7
Name of this number: seven
TESTNAMESPACE>do ##class(User.DemoClass).Interesting()
Today's date: 2021-07-15
Your installed version: IRIS for Windows (x86-64) 2019.3 (Build 310U) Mon Oct 21 2019 13:48:58 EDT
Your username: SuperUser
Your security roles: %All
TESTNAMESPACE>