美文网首页
第九章 Caché 函数大全 $CLASSNAME 函数

第九章 Caché 函数大全 $CLASSNAME 函数

作者: Cache技术分享 | 来源:发表于2020-08-30 08:22 被阅读0次

    第九章 Caché 函数大全 $CLASSNAME 函数

    返回类的名称。

    大纲

    $CLASSNAME(n)
    

    参数

    • n 可选-对类实例的对象引用(OREF)。如果省略,则返回当前类的类名。

    描述

    $CLASSNAME返回类的名称。通常,它接受对象引用(OREF)并返回相应的类名。不带参数的$CLASSNAME返回当前类的名称。$CLASSNAME始终返回完整的类名(例如,%SQL.Statement),而不是省略包名的类名的简短版本(例如,STATEMENT)。

    $CLASSNAME在功能上等同于%Library.Base超类的%ClassName(1)方法。$CLASSNAME函数在返回完整类名方面比%ClassName(1)方法提供更好的性能。要返回类名称的简短版本,可以使用%ClassName()%ClassName(0)

    示例

    下面的示例创建一个类的实例。$CLASSNAME获取实例OREF并返回相应的类名:

    /// d ##class(PHA.TEST.Function).CLASSNAME()
    ClassMethod CLASSNAME()
    {
        SET dynoref = ##class(%SQL.Statement).%New()
        WRITE "instance class name: ",$CLASSNAME(dynoref)
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME()
    instance class name: %SQL.Statement
    

    在下面的示例中,不带参数的$CLASSNAME返回当前类上下文的类名。在本例中,它是DocBook.Utils类。这与$this特殊变量中包含的类名相同:

    /// d ##class(PHA.TEST.Function).CLASSNAME1()
    ClassMethod CLASSNAME1()
    {
        WRITE "class context: ",$CLASSNAME(),!
        WRITE "class context: ",$THIS
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME1()
    class context: PHA.TEST.Function
    class context: PHA.TEST.Function
    

    以下示例显示$CLASSNAME函数和%ClassName(1)方法返回相同的值。它还显示了使用%ClassName()方法(不带参数或带0参数)返回类名称的简短版本:

    /// d ##class(PHA.TEST.Function).CLASSNAME2()
    ClassMethod CLASSNAME2()
    {
    CurrentClass
        WRITE "current full class name: ",$CLASSNAME(),!
        WRITE "current full class name: ",..%ClassName(1),!
        WRITE "current short class name: ",..%ClassName(0),!
        WRITE "current short class name: ",..%ClassName(),!!
    ClassInstance
        SET x = ##class(%SQL.Statement).%New()
        WRITE "oref full class name: ",$CLASSNAME(x),!
        WRITE "oref full class name: ",x.%ClassName(1),!
        WRITE "oref short class name: ",x.%ClassName(0),!
        WRITE "oref short class name: ",x.%ClassName()
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME2()
    current full class name: PHA.TEST.Function
    current full class name: PHA.TEST.Function
    current short class name: Function
    current short class name: Function
     
    oref full class name: %SQL.Statement
    oref full class name: %SQL.Statement
    oref short class name: Statement
    oref short class name: Statement
    

    相关文章

      网友评论

          本文标题:第九章 Caché 函数大全 $CLASSNAME 函数

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