这是从 this project 中提取的代码(注:为了清晰起见,重新格式化):
Class Util.Data.EmojiType Extends %Persistent
{
Property CodePoint As %Integer;
Property UnicodeChar As %String [
Calculated,
ReadOnly,
SqlComputeCode = { set {*} = $wchar({CodePoint})},
SqlComputed,
Transient
];
// snip
Method UnicodeCharGet() As %String
{
quit $wchar(..CodePoint)
}
现在我真的不明白了。为什么会这样UnicodeChar
既是计算的,又具有自定义 getter(哎呀),加上自定义 getter 的作用与 SqlComputeCode
完全相同。 ?
如果我尝试获取此属性,这一切的哪一部分将被触发?
最佳答案
即使属性未计算,也可以调用自定义 getter。但仅适用于对象访问模式。为了通过 SQL 查询获取计算值,属性应该定义所有属性:Calculated、SqlCompulated 和 SqlComputeCode。如果定义了 SqlComputeCode,则此代码仅在 SQL 查询中使用。当属性有Calculated属性,但没有SqlCompulated属性时,不会出现在SQL结果中。
关于objectscript - 一个通过自定义 getter 进行计算、SqlCompulated 的属性,全部同时进行 : what has the priority?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35696356/