指定何时生成此方法。仅当方法是方法生成器时适用。
要指定在生成其他方法后调用此方法的生成器,请使用以下语法:
Method name(formal_spec) As returnclass [ CodeMode = ObjectGenerator, GenerateAfter = methodlist ]
{ //implementation }
其中methodlist
是单个方法名或用逗号分隔的方法名列表,用括号括起来。
在方法生成器方法的情况下,指定生成器应在生成列出的方法后调用。当需要控制方法生成器的调用顺序时,此关键字非常有用。
指定此方法定义是否是内部的(不显示在类文档中)。
要指定此方法是内部的,请使用以下语法:
Method name(formal_spec) As returnclass [ Internal ]
{ //implementation }
否则,省略此关键字或将单词Not
放在关键字的前面。
内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。
指定用于实现此方法的语言。
要指定用于实现方法的语言,请使用以下语法:
Method name(formal_spec) As returnclass [ Language = language ]
{ //implementation }
其中language
是下列之一:
objectscript
(默认) — ObjectScriptispl
— 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
}
}
指定此方法是否可以在子类中继承。
要指定此方法不能在子类中继承,请使用以下语法:
Method name(formal_spec) As returnclass [ NotInheritable ]
{ //implementation }
此关键字指定此方法不能在子类中继承。
重要:虽然让一个成员不能被它的子类继承在某些情况下非常有用,但是关键字应该很少被明智地使用,因为它破坏了继承契约。
如果省略此关键字,此方法是可继承的。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。