考虑下面的例子。optionsDoc 作为空值传入。它在此函数中的分配被忽略,并且在设置后它仍然没有任何内容。tmpDoc 设置得很好。两个分配是相同的,所以这不是视图问题。preferencesDoc 的分配被阻止,显然是因为它是一个参数。没有错误,并且按键查找工作正常,这可以通过成功分配 tmpDoc 来证明。
Function test(preferencesDoc As NotesDocument)
If preferencesDoc Is Nothing then
Set preferencesDoc=docLookupView.getDocumentByKey("GENERAL_PREFERENCES", True)
End if
Dim tmpDoc As NotesDocument
Set tmpDoc=docLookupView.getDocumentByKey("GENERAL_PREFERENCES", True)
End Function
有人可以解释这里发生了什么以及如何去做吗?
澄清。
很高兴看到人们提出想法。但是,您必须在这里实现此功能只是为了说明我的问题。这是一种简单的方法,可以帮助我传达问题,而不是我真实代码的一部分。请留在这个问题上。
同样,如果preferencesDoc 作为空值传入,它在函数中的“修复”分配将被完全忽略。托德似乎在做些什么。当我传入设置的preferenceDoc 时,我可以将它重新分配给不同的文档。
回答
call test(Nothing) // will not work
---
Dim doc as NotesDocument
call test(doc) // will work
Tode 的关键声明:如果您将“Nothing”作为参数传递,那么它将什么都没有。如果您传递一个未初始化的 NotesDocument,那么它将被初始化。
托德和克努特都说到点子上了,我认为里奇在暗示同样的事情。谢谢。我相信克努特是第一个,所以我会赞扬他。
多年来我一直在 Notes 中编码,这是我第一次遇到这个问题。每天学习一些东西。:)