文章
· 九月 17, 2023 阅读大约需 2 分钟

第三十章 Classes - 方法生成器

第三十章 Classes - 方法生成器

方法生成器

方法生成器是类编译器在类编译期间调用的程序。它的输出是该方法的实际运行时实现。方法生成器提供了一种继承方法的方法,可以生成根据继承类或属性的需要定制的高性能、专用代码。在 IRIS 库中,方法生成器广泛用于数据类型和存储类。

Class Queries

类可以包含类查询。类查询定义可由该类使用的 SQL 查询,并指定用作查询容器的类。下面显示了一个示例:

Query QueryName(Parameter As %String) As %SQLQuery
{
SELECT MyProperty, MyOtherProperty FROM MyClass
 WHERE (MyProperty = "Hello" AND MyOtherProperty = :Parameter)
 ORDER BY MyProperty
}

定义类查询以提供预定义的查找以供在应用程序中使用。例如,可以按某些属性(例如按名称)查找实例,或提供满足一组特定条件的实例列表,例如从巴黎到马德里的所有航班。此处显示的示例使用参数,这是提供灵活查询的常用方法。请注意,可以在任何类中定义类查询;不需要在持久类中包含类查询。

扩展数据块 XData Blocks

由于 XML 通常是表示结构化数据的有用方法,因此 类包含一种机制,允许包含格式良好的 XML 文档,以满足可能有的任何需要。为此,需要包含一个 XData 块,它是另一种类成员。

XData 块用于某些特定目的,这些可能会给关于自己的应用程序的想法:

  • IRIS Web 服务和 Web 客户端的 WS-Policy 支持。在这种情况下,XData 块描述了安全策略。
  • 在商业智能中,可以使用 XData 块来定义多维数据集、主题区域、KPI 和其他元素。

类定义中的宏和包含文件

在类定义中,可以在 ObjectScript 方法中定义宏并在该方法中使用它们。然而,更常见的是,在包含文件中定义它们,可以将其包含在任何类定义的开头。例如:

Include (%assert, %callout, %occInclude, %occSAX)

/// Implements an interface to the XSLT Parser. XML contained in a file or binary
/// stream may be transformed
Class %XML.XSLT.Transformer Extends %RegisteredObject ...

然后,该类中的任何 ObjectScript 方法都可以引用该包含文件或其包含的包含文件中定义的任何宏。

宏是继承的。也就是说,子类可以访问与其超类相同的所有宏。

讨论 (0)1
登录或注册以继续