高手来探讨:LotusScript函数/类 有时候不能返回另一数据库的对象,是怎么回事?

原石化玉 2004-10-26 07:00:40
Lotus Script 的函数返回值 或者 类的属性 如果不是当前数据库的对象,在函数内或者类中运行时,是正常的,可是返回后就丢了。
例如:
'定义
public class Docset
private docA as NotesDocument
private docB as NotesDocument

sub new(doc as NotesDocument)

end sub
function update()

end function

end class

'使用,docs.docA,docs.docB都正常赋了值,是其他数据库的对象
dim docs as new Docset(doc)

'在docs.update中试图调用.docA,.docB,没了。调试发现 到这里docs.docA就没了。
docs.update()




为什么会这样???
我有很多关键应用都是这么搞的,挺正常。可今儿修改完善以前的一个类时,不行了。咋回事?
我都不敢动了。

...全文
195 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MitchJuan 2004-10-29
  • 打赏
  • 举报
回复
你这样定义有什么意义
freyild1979 2004-10-29
  • 打赏
  • 举报
回复
dim Result list as variant
是这样定义的 跟数组对象不是一回事。
我还可以这样写
Set Result("haha") = notesView
MitchJuan 2004-10-29
  • 打赏
  • 举报
回复
To: freyild1979(逐浪-》大道中庸,运于无形《-分不在多,有星则灵) (

Dim ss As New notessession
Dim db As notesdatabase
Dim doc As notesdocument


Set db = ss.currentdatabase
Set doc = db.alldocuments.getfirstdocument

Dim arr(0 To 1) As Variant
Set arr(0) = db
Set arr(1) = doc

这个怎么不行?
freyild1979 2004-10-29
  • 打赏
  • 举报
回复
方便啊,可以把输出对象打包,让你程序的输出接口统一。而且可以跨库使用。
MitchJuan 2004-10-28
  • 打赏
  • 举报
回复
说句题外话

To: freyild1979(逐浪-》大道中庸,运于无形《-分不在多,有星则灵)
使用 list variant 对象进行赋值

我不知道大家为什么喜欢用List,我从来不用它,我一直用数组。
趁此机会,大家来讨论一下大家都喜欢用哪个?List、数组各有什么优缺点


freyild1979 2004-10-28
  • 打赏
  • 举报
回复
好像notesdatabase是可以的,我可以肯定如果是notesdocument及其以下所包含的对象,那么就不行了,这也是LS只是半面向对象的语言的原因吧。
---------------
to:MitchJuan()

Set Result(0) = notesdb
Set Result(1) = notesdoc
数组不能完成上面这样的赋值吧,这就是好处之一,最主要还是觉得代码能规范。可以写得很漂亮,每个输入输出都可以是list variant。
原石化玉 2004-10-28
  • 打赏
  • 举报
回复
可是为什么我原来定义的一些类也是有跨库变量,却一直很正常呀。那又是为啥呢?
MitchJuan 2004-10-27
  • 打赏
  • 举报
回复
跨数据库之间不能返回另一个库的对象。
因为父类实例已dispose,所以父类实例中的任何对象都不存在了。
freyild1979 2004-10-27
  • 打赏
  • 举报
回复
楼上正解,不过有一方法可以补救。
使用 list variant 对象进行赋值
自定义类或函数中使用如下的方法
function vvv(vb as variant) as variant
......
dim Result list as variant
Set Result(0) = notesdb
Set Result(1) = notesdoc
vvv = Result
end function
主程序里
dim t as variant
t = vvv(g)
dim doc as notesdocument
set doc= vvv(1)
此方法虽然麻烦了些,不过可以规范代码,并且可以避免楼上所述之情况。

536

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧