首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ObjectScript中将变量设置为NULL?

如何在ObjectScript中将变量设置为NULL?
EN

Stack Overflow用户
提问于 2012-10-25 03:02:22
回答 3查看 2.6K关注 0票数 6

在c#中,我可以这样做:

代码语言:javascript
复制
object foo = null;

我如何在对象脚本中做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-25 03:38:56

对于简单的变量,没有办法将变量设置为具有未定义的值。因为缓存对象脚本具有松散类型,所以没有必要将对象引用设置为NULL,将引用的值更改为任何其他值就足够了,最常见的是空字符串,垃圾回收器将清理没有活动引用的对象。

出于所有实际目的,将该变量设置为空字符串"“就足够了。如果没有,你能否详述你的问题?

缓存对象脚本中的对象属性永远不会解析为未定义的值。如果该值未定义(因为它的SQL值为NULL或从未被赋值),则该属性将解析为空字符串的值。如果希望该属性包含null的SQL表示形式,则可以对与该对象对应的行执行SQL Insert或Update操作,并将该字段设置为NULL。如果将对象的属性设置为空字符串并保存它,则该对象的SQL行将不会有NULL,但会有空字符串。

基本上,在对象视图中并没有NULL的抽象表示。SQL NULL的序列化值在SQL视图中解析为NULL,在Objects视图中解析为空字符串。

顺便说一下,SQL视图中NULL的序列化后的值是空字符串,空字符串的序列化后的值是ASCII 0。

票数 10
EN

Stack Overflow用户

发布于 2012-10-25 12:14:19

要从内存中擦除变量并对引用的对象进行垃圾回收,可以使用kill命令

代码语言:javascript
复制
Method Test() {
  set foo=##class(Obj).%New()
  // created object of class Obj. created variable foo pointing to this object.
  // do something
  set foo=""
  // Object of class Obj is now marked for garbage collection 
  // but variable foo still exist
  // do something else
  kill foo
  // foo is now undefined
  // do something else
}

但是,如果您使用ProcedureBlock方法(在新的缓存版本中是默认的)或new命令,则不需要这样做。在这种情况下,所有对象引用和变量都将在方法完成后自动销毁

代码语言:javascript
复制
Method Test() {
  set foo=##class(Obj).%New()
  // created object of class Obj. created variable foo pointing to this object.
  // do something
}
// after method finishes, foo is undefined and object of class Obj is destroyed

如果你只想声明变量是某种类型,你可以使用#dim指令。它什么也不做,只是帮助Studio确定变量类。有时,如果Studio不能确定类本身,而您想要使用它的内联帮助器,那么它就很有用。

代码语言:javascript
复制
Method Test() {
  #dim foo as Obj
  do ##class(Obj).GenerateSomething(.foo)
  write foo.Property 
  // Studio will provide helper bar for foo properties and methods now
}
票数 6
EN

Stack Overflow用户

发布于 2013-08-22 03:51:20

所选的解决方案绝对不准确。如果您希望按照示例中的说明将变量设置为NULL,则可以按照SSH中的说明进行操作。您将:

代码语言:javascript
复制
K VARIABLE

代码语言:javascript
复制
KILL VARIABLE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13055952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档