这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
第六十五章 方法关键字 – GenerateAfter
指定何时生成此方法。仅当方法是方法生成器时适用。
用法
要指定在生成其他方法后调用此方法的生成器,请使用以下语法:
Method name(formal_spec) As returnclass [ CodeMode = ObjectGenerator, GenerateAfter = methodlist ]
{ //implementation }
其中methodlist
是单个方法名或用逗号分隔的方法名列表,用括号括起来。
详解
在方法生成器方法的情况下,指定生成器应在生成列出的方法后调用。当需要控制方法生成器的调用顺序时,此关键字非常有用。
第六十六章 方法关键字 – Internal
指定此方法定义是否是内部的(不显示在类文档中)。
用法
要指定此方法是内部的,请使用以下语法:
Method name(formal_spec) As returnclass [ Internal ]
{ //implementation }
否则,省略此关键字或将单词Not
放在关键字的前面。
详解
内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。
第六十七章 方法关键字 – Language
指定用于实现此方法的语言。
用法
要指定用于实现方法的语言,请使用以下语法:
Method name(formal_spec) As returnclass [ Language = language ]
{ //implementation }
其中language
是下列之一:
-
objectscript
(默认) — ObjectScript -
ispl
— Informix存储过程语言 -
tsql
— Transact-SQL
详解
此关键字指定用于实现此方法的语言。
值ispl
和tsql
仅支持类方法。
如果指定ispl
的值,则方法的主体仅限于单个CREATE PROCEDURE
语句。
默认
如果省略此关键字,将使用类级语言关键字指定的语言。
注意:不能在类级别指定Language = ispl
只能将此值用于方法。
注意:除了ObjectScript之外,不能使用任何其他语言实现分片类的方法。
示例
Class User.Person Extends %Persistent
{
Property Name As %String;
Property Gender As %String;
/// An ObjectScript instance method that writes the name and gender of a person
Method Print() As %Status [ Language = objectscript ]
{
write !, ..Name, " is a ", ..Gender
}
/// A TSQL class method that inserts a row into the Person table
ClassMethod TSQLTest() As %Status [ Language = tsql ]
{
INSERT INTO Person (Name, Gender) VALUES ('Manon', 'Female')
}
/// An ISPL class method that creates an stored procedure named IsplSp
ClassMethod ISPLTest() As %Status [ Language = ispl ]
{
CREATE PROCEDURE IsplSp()
INSERT INTO Person (Name, Gender) VALUES ('Nikolai', 'Male')
END PROCEDURE
}
}
第六十八章 方法关键字 – NotInheritable
指定此方法是否可以在子类中继承。
用法
要指定此方法不能在子类中继承,请使用以下语法:
Method name(formal_spec) As returnclass [ NotInheritable ]
{ //implementation }
详解
此关键字指定此方法不能在子类中继承。
重要:虽然让一个成员不能被它的子类继承在某些情况下非常有用,但是关键字应该很少被明智地使用,因为它破坏了继承契约。
默认
如果省略此关键字,此方法是可继承的。
今天的文章方法关键字GenerateAfter,Internal,Language,NotInheritable分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/23632.html