创建变体数据类型
(vlax-make-variant [value] [type])
参数
value
要指定给变体的值。如果省略该参数,变体将创建为 vlax-vbEmpty 类型(未初始化)。
type
变体的类型。可由下列常量之一来表示:
vlax-vbEmpty (0) 未初始化(缺省值)
vlax-vbNull (1) 不包含有效数据
vlax-vbInteger (2) 整数型
vlax-vbLong (3) 长整数型
vlax-vbSingle (4) 单精度浮点数
vlax-vbDouble (5) 双精度浮点数
vlax-vbString (8) 字符串
vlax-vbObject (9) 对象
vlax-vbBoolean (11) 布尔值
vlax-vbArray (8192) 数组
括号中的整数表示常量的值。在参数中最好指定常量,而不要指定常量的值。因为这些值在后续 AutoCAD 中可能会有所变化。
如果不指定 type,vlax-make-variant 根据 value 的值来指定缺省的数据类型。下表是指定给每种 LISP 数据类型的缺省变体数据类型:
nil vlax-vbEmpty
:vlax-null vlax-vbNull
integer vlax-vbLong
real vlax-vbDouble
string vlax-vbString
VLA-object vlax-vbObject
:vlax-true, :vlax-false vlax-vbBoolean
variant 与初始值的类型相同
vlax-make-safearray vlax-vbArray
返回值
创建的变体。
示例
使用 vlax-make-variant 的缺省值创建变体:
_$ (setq varnil (vlax-make-variant))
#<variant 0 >
函数缺省创建未初始化 (vlax-vbEmpty) 的变体。可以用下面的显式调用完成同样的功能:
_$ (setq varnil (vlax-make-variant nil))
#<variant 0 >
创建整型变体并将其值设置为 5:
_$ (setq varint (vlax-make-variant 5 vlax-vbInteger))
#<variant 2 5>
重复上述命令,但去掉其中的 type 参数。查看结果:
_$ (setq varint (vlax-make-variant 5))
#<variant 3 5>
缺省情况下,vlax-make-variant 将给定的整数值指定为长整数数据类型,则不是原先希望的整型。这个样例强调了使用数值时,显式声明变体类型的重要性。
省略字符串的 type 参数将导致如下结果:
_$ (setq varstr (vlax-make-variant "ghost"))
#<variant 8 ghost>
要创建包含数组的变体,必须指定类型 vlax-vbArray 以及数组中数据的类型。例如,要创建包含双精度数数组的变体,首先将变量的值设为双精度数组:
_$ (setq 4dubs (vlax-make-safearray vlax-vbDouble '(0 . 3)))
#<safearray...>
然后将双精度数组指定给变体:
_$ (vlax-make-variant 4dubs)
#<variant 8197 ...>
参阅
vlax-make-safearray、 vlax-variant-change-type、 vlax-variant-type 和 vlax-variant-value 函数。关于使用变体的详细信息,请参见 《Visual LISP 开发人员手册》中的 使用变体。
明经通道 版权所有 未经许可 不得传播 | 评论 |