收藏

第三十三章 Objects - OREFs

2023-09-20  本文已影响0人  Cache技术分享

第三十三章 Objects - OREFs

OREFs

对象类的 %New() 方法创建一个内部内存结构来包含对象的数据,并返回指向该结构的 OREF(对象引用)。 OREFIRIS 中的一种特殊值。应该记住以下几点:

例如:

TESTNAMESPACE>set myobj=##class(Sample.Person).%New()
 
TESTNAMESPACE>w myobj
3@Sample.Person 
>>> myobj=iris.cls("Sample.Person")._New()
>>> print(myobj)
<iris.Sample.Person object at 0x000001A1E52FFD20>
TESTNAMESPACE>set x=2

TESTNAMESPACE>set x.Name="Fred Parker"

SET x.Name="Fred Parker"
^
<INVALID OREF>
>>> x=2
>>> x.Name="Fred Parker"
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'int' object has no attribute 'Name'

认识到这种错误是有帮助的。这意味着变量不是OREF,但应该是OREF

下面的代码不会创建OREF,而是创建一个看起来像OREF的字符串:

TESTNAMESPACE>set testthis="4@Sample.Person"
>>> testthis="<iris.Sample.Person object at 0x000001A1E52FFD20>"

注意:对于持久化类,像%OpenId()这样的方法也会返回oref。

上一篇 下一篇

猜你喜欢

热点阅读