85. BASIC和LotusScript中的Variant

缘起

最近我回看以前记的关于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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值