Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

メソッドの詳細

ここでは、クラス・メソッドについてさらに詳しく説明します。

  • ObjectScript 変数はデータ型を使用しませんが、クラス・メソッドはデータ型を使用します。メソッド・シグニチャにより、引数とそのデータ型を宣言します。クラス・メソッドが値を返す場合、シグニチャで戻り値のデータ型を宣言します。例と演習では、%String、%Numeric、%Date、%Boolean などの基本的なデータ型を使用します。これらのデータ型の詳しい説明は、このチュートリアルの対象ではありません。

  • 既定では、クラス・メソッドはパブリックです。シグニチャの後に Private キーワードを使用して、プライベート・クラス・メソッドを作成することもできます。プライベート・クラス・メソッドは、同じクラス内の他の場所からのみ呼び出すことができます。

  • コードは中括弧 ({}) で囲まれています。ObjectScript コードのほぼどこでもスペースと改行を使用できます。例外として、コマンドと引数の間、あるいは 1 行内のコメントは分けることができません。

  • コメントを示す場合は、// または ; を使用します。行にコメントも記述する場合、行内のその他のコード部分と区別するために、少なくとも 1 つのスペースを入れてから、コメントを記述する必要があります。コメントが複数行にわたる場合、コメントの最初に /* を、コメントの最後に */ を記述します。

  • 既定では、クラス・メソッド内の変数はプライベートです。つまり、そのクラス・メソッドの外部からは参照できません。

  • シグニチャの後に Publiclist キーワードを使用すると、変数をパブリックに変更できます。共通のパブリック変数のセットを宣言するクラス・メソッドのいずれもが、それらの変数を共有します。ただし、パブリック (共有) 変数の使用は、推奨できるプログラミング手法ではありません。変数を共有する場合、変数を引数として渡す方法が推奨されています。この例およびチュートリアルの演習では、デモンストレーションの目的でのみ、パブリック変数を使用しています。

Note:

コード行の先頭にラベル (タグとも呼びます) を置くことができます。行にラベルを置く場合、タブやスペースを含む残りの行からラベルを離す必要があります。ラベルは一般的にルーチン内で使用されます。慣例で、ルーチンの 1 行目にはルーチン名を表すラベルを付けることをお勧めします。

パブリック・メソッドとプライベート・メソッドの例:

VS Code - ObjectScript


/// examples for ObjectScript Tutorial
Class ObjectScript.Examples
{

/// demo of public and private methods, along with a public variable
ClassMethod PrivatePublic()
{
    do ..Private()   // call a private method
    do ..Public(9)   // call a public method
}

/// a private method with public variable a
ClassMethod Private() [Private, Publiclist = a]
{
    write !, "setting a"  set a = 1
    write !, "setting b"  set b = 2
    write !, "setting c"  set c = 3
    write !, "setting d"  set d = 4
}

/// a public method with an argument and a return value
ClassMethod Public(num as %Numeric) as %String
{
    write !, "my favorite number is ", num
    return "This is my return value!!!"
}
}
ターミナルを使用したテスト


USER>do ##class(ObjectScript.Examples).PrivatePublic()

setting a
setting b
setting c
setting d
my favorite number is 9
USER>write

a=1
USER>set x = ##class(ObjectScript.Examples).Public(7)     

my favorite number is 7
USER>write x
This is my return value!!!
USER>do ##class(ObjectScript.Examples).Private()          

DO ##CLASS(ObjectScript.Examples).Private()
^
<PRIVATE METHOD>
USER>

FeedbackOpens in a new tab