85. BASIC和LotusScript中的Variant

本文探讨了在LotusScript中使用Variant类型时遇到的问题,特别是涉及到嵌套数组时的"Type mismatch"错误。文章介绍了Variant的来源、用途、特点以及使用限制,并指出在某些特定场景如函数返回、对象参数和数组赋值中,必须谨慎使用 Variant 类型,以避免潜在的错误。同时,指出了 LotusScript 中 Variant 不能容纳多层嵌套数组的限制,提醒开发者注意这一潜在问题。
摘要由CSDN通过智能技术生成
缘起

最近我回看以前记的关于Notes的笔记,发现在Notes bugs类别下,两条编号间隔一的竟然是相差无几的内容。

2. 'Type mismatch' occurs if an nested array e.g. when an item of ColumnValues is an array, is assigned to a variant or passed as an argument of a function.

4. When an item of ColumnValues is an array, 'Type mismatch' occurs if it is assigned to a variant, e.g.columns=entry.Columnvalues

这至少说明两件事。一是当我初次遇到以上错误,记录下之后,并未注意避免,甚至完全忘记了,下次再撞上时,还会当成新发现记录。二是我的英语保持在同样的水准上,在叙述同一件事情上风格基本一致。

对这个在同一地方跌倒两次的教训,我觉得有必要说一说。既可以提醒大家不要重蹈我的覆辙,也能加深我自己的印象,以免下次又记上一条重复的笔记。

LotusScript中Variant之来源

为了全面理解这个问题和多凑些字数,要从variant(变体型)说起。Visual Basic中变体型是一种能容纳各种数据类型的数据结构【注1】。技术上说,它是taggedunion(加标签的联合),占用十六字节的内存,前两字节保存数据类型的编码(即标签),第三至八字节为了对齐而空白,第九至十六共八个字节保存实际的数据(即联合)。前两字节的内容可以用VarType函数返回如下:

Constant

Value

Description

vbEmpty

0

Empty (uninitialized)

vbNull

1

Null (no valid data)

vbInteger

2

Integer

vbLong

3

Long integer

vbSingle

4

Single-precision floating-point number

vbDouble

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值