第三十章 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
方法都可以引用该包含文件或其包含的包含文件中定义的任何宏。
宏是继承的。也就是说,子类可以访问与其超类相同的所有宏。
网友评论