objectscript - 一个通过自定义 getter 进行计算、SqlCompulated 的属性,全部同时进行 : what has the priority?

标签 objectscript

这是从 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结果中。

SqlComputed , Calculated

关于objectscript - 一个通过自定义 getter 进行计算、SqlCompulated 的属性,全部同时进行 : what has the priority?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35696356/

相关文章:

javascript - 缓存服务器页面 (CSP) 中的缓存变量作用域

intersystems-cache - 在运行时执行存储的函数

intersystems-cache - 如何将 "throw"a %Status 转换为 %ETN?

sonarqube - 任何将 SonarCube 与 ObjectScript 一起使用的人

java - 如何在 Caché 中使用 Java 方法?

intersystems-cache - 意外的 SQL 错误在系统间缓存中返回 <UNDEFINED>

string - 比较系统间缓存对象脚本中的字符串

syntax - 系统间缓存对象脚本通过引用将属性作为参数传递

intersystems-cache - ByRef 和 Output 方法参数修饰符有什么区别?

intersystems-cache - Caché ObjectScript 中的 Try-Finally 等价物