Caché识别五种类型的间接寻址

简介: Caché识别五种类型的间接寻址

Caché识别五种类型的间接寻址:

  • Name indirection
  • Pattern indirection
  • Argument indirection
  • Subscript indirection
  • $TEXT argument indirection

执行哪种类型的间接寻址取决于@variable出现的上下文。下面将分别描述每种类型的间接连接。

间接寻址符不能与点语法一起使用。这是因为点语法是在编译时解析的,而不是在运行时解析的。

名称间接寻址

在名称间接寻址中,间接计算结果为变量名、行标签或例程名称。在执行该命令之前将变量的内容替换为预期的名称。

名称间接寻址只能访问公共变量。

使用间接地址引用命名变量时,间接地址的值必须是完整的全局变量或局部变量名,包括任何必要的下标。

ClassMethod Indirection1()
{
  s Y = "B"
  w Y,!
  s @Y = 6
  if Y '= @Y w "不相等!",!
  w @Y,!
}
复制代码

重要提示:如果使用间接方式获取或设置对象属性值,可能会导致错误。不要使用此类调用,因为会绕过属性访问器方法(Get和Set)。相反,可以使用CLASSMETHOD、CLASSMETHOD、CLASSMETHODMETHOD和$PROPERTY)函数。

  • 当使用间接寻址引用行标签时,间接的值必须是语法上有效的行标签。
  • 如果name的值为1,则标签的值为apple
  • 如果name的值为2,则标签的值为banana
  • 如果name的值为其他时,则标签的值为stop
ClassMethod Indirection2(name)
{
  s fruit = $select(name = 1 : "apple", name = 2 : "banana", 1 : "stop")
fruit 
  goto @fruit
  q
apple
  w "apple"
  q
banana
  w "banana"
  q
stop
  w "stop"
  q
}
复制代码
  • 当使用间接引用例程名时,间接寻址的值必须是语法上有效的例程名。
ClassMethod Indirection3(name)
{
  s fruit = $select(name = 1 : "apple1", name = 2 : "banana1", 1 : "stop1")
  d @fruit
  q
apple1()
  w "apple1"
banana1()
  w "banana1"
stop1()
  w "stop1"
}
复制代码
  • 名称间接寻址只能替换名称值。
ClassMethod Indirection4(name)
{
  s var1 = "var2"
  s var2 = 5
  s x = @var1 * 6
  w x,!
}
复制代码
  • 当计算等号右边的表达式时将@var1解释为对变量名的间接引用,而不是数值。
s var1 = "5"
  s x = @var1 * 6
  w x,!


相关文章
|
前端开发 Java 关系型数据库
Caché学习笔记(一、cache安装与配置)
Caché学习笔记(一、cache安装与配置)
1174 0
Caché学习笔记(一、cache安装与配置)
|
编解码 ice
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
603 0
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
|
8月前
PokéLLMon 源码解析(三)(1)
PokéLLMon 源码解析(三)(1)
29 0
|
8月前
PokéLLMon 源码解析(六)(3)
PokéLLMon 源码解析(六)
35 0
|
8月前
PokéLLMon 源码解析(五)(1)
PokéLLMon 源码解析(五)
33 0
|
8月前
PokéLLMon 源码解析(五)(4)
PokéLLMon 源码解析(五)
60 0
|
8月前
PokéLLMon 源码解析(四)(3)
PokéLLMon 源码解析(四)
35 0
|
8月前
PokéLLMon 源码解析(六)(1)
PokéLLMon 源码解析(六)
41 0
|
人工智能 编解码 API
对于AI Earth,关键字"sar_water"用于提取水体信息,
对于AI Earth,关键字"sar_water"用于提取水体信息,
75 1
|
机器学习/深度学习 数据挖掘 定位技术
Google Earth Engine ——数据全解析专辑(Global Map of Oil Palm Plantations)全球油棕种植园数据集!
Google Earth Engine ——数据全解析专辑(Global Map of Oil Palm Plantations)全球油棕种植园数据集!
169 0
Google Earth Engine ——数据全解析专辑(Global Map of Oil Palm Plantations)全球油棕种植园数据集!

热门文章

最新文章