文章
· 八月 21, 2023 阅读大约需 3 分钟

第五章 ObjectScript

第五章 ObjectScript

方法和例程都可以用 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() 方法,该方法是此类的私有方法,不能从类外部调用。
- WRITEQUITSETREAD 是命令。该语言还包括用于删除变量的其他命令、用于控制程序流的命令、用于控制 I/O 设备的命令、用于管理事务(可能是嵌套的)的命令等等。

命令名称不区分大小写,尽管按照惯例它们在运行文本中显示为全大写。

  • 该示例包括两个运算符。加号(+)执行加法,下划线(_)执行字符串连接。

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>
讨论 (0)1
登录或注册以继续