美文网首页
第五章 ObjectScript

第五章 ObjectScript

作者: Cache技术分享 | 来源:发表于2023-08-21 07:40 被阅读0次

    第五章 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>
    

    相关文章

      网友评论

          本文标题:第五章 ObjectScript

          本文链接:https://www.haomeiwen.com/subject/pxvemdtx.html