问题标签 [variant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3083 浏览

delphi - 测试强制转换 OleVariant 是否会引发异常(不引发异常)

在 Delphi 中,我想确定是否可以将特定的 OleVariant 转换为特定的数据类型,如果不能,则不会引发异常。异常不适用于程序流程,对吗?

我想要的是这样的,其中 Type 可以是 OleVariant 支持的任何东西:

想要的是

变量无法转换为布尔值的情况只是经常发生的正常情况,并不表示任何类型的错误。

0 投票
1 回答
577 浏览

c++ - 组合 boost::exception 和 boost::variant 的问题

当包含 boost::exception 时,我对两级变体结构有奇怪的问题。我有以下代码片段:

当我尝试编译它时,出现以下错误:

代码片段尽可能地简化,实际代码中的结构要复杂得多,每个变体都有五个子类型。

当我删除#include boost/exception/all 并尝试以下测试片段时,程序编译正确:

有人可以告诉我如何定义运算符 << 以便即使在使用 boost::Exception 时也能正常工作?

谢谢并恭祝安康

瑞克

0 投票
5 回答
10705 浏览

c++ - 检查 boost::variant为空

我的程序中有一个 boost::variant ,我想检查变体本身是否已初始化,以及其中一种类型中是否包含值。

我已经在变体上尝试了 empty() ,但这似乎不起作用。也不会检查 NULL。

有人知道如何检查吗?

编辑:好的,它似乎永远不会为空,但它所包含的类型中并不总是有一个值,那么如何检查无值情况?

0 投票
1 回答
8187 浏览

arrays - 变体类型的 VBA 数组作为类属性

我有一个类可以处理几个数字数组(双精度类型),还需要处理一个描述符数组,其中包括字符串和整数的混合,需要相应地用作字符串和数字。所以我决定创建一个变体类型的数组属性(不是包含数组的变体)。但是这个似乎不起作用,而类型 double 数组则起作用。

具体来说,这种类型的双数组属性工作正常,一次接收或返回一个数组:

但是,当我使用变体类型的数组尝试相同的模式时,Get 属性返回一个空/未分配的变体数组:

将数组包装在变体中(而不是具有变体类型的数组),当然可以正常工作:

但是,在属性中,适用于 Dim D() As Double 的模式不适用于 Dim V() As Variant 的已知和标准吗?

0 投票
1 回答
526 浏览

c# - VB6(dll 文件)中的函数,带有变体类型的参数,与调用中一样。网?

我有一个带有方法的dll。此方法在 vb6 中接受一个对象参数(在 .net 中),它被定义为一个变体,它是一个字符串向量。

如何在传递字符串数组的.net 上调用此方法?

请给我一个例子

谢谢

0 投票
2 回答
324 浏览

recursion - 变体、递归函数和类型推断

我是 OCaml 的新手,但过去两天都在工作,以便更好地了解如何使用它。我最近一直在做很多事情,但有些事情阻碍了我前进。

我正在尝试在 OCaml 中实现 evalexpr。使用这种语言很容易,你会说:所以我想,我第一次使用常规整数,效果很好。但现在我正在尝试使用我的 OWN 类型和我自己的函数来解决操作:当然这并不像我预期的那么容易。

这对我来说似乎没问题......但编译器不同意。我认为“(evalexpr a)”的类型很明显是MyInt.myint,因为它是evalexpr函数可以返回的唯一最终返回值:不过,编译器认为它的类型是“expr - > MyInt.myint” .

这是否意味着它不应用函数 evalexpr 并返回函数本身?如果是这样,为什么它会那样做?我就是想不通。而且我想不出另一种方法来做我想要在这里实现的目标。

0 投票
3 回答
1284 浏览

c++ - 在 C++0x 中创建静态类型的变体

我想知道,是否可以在 C++0x 中创建一个静态类型的变体(其行为类似于自动):

当我们将 v 分配给 int 以外的值时,它不会编译:

到目前为止,我还没有找到任何优雅的解决方案。

0 投票
2 回答
267 浏览

variant - 变体类型存储和对齐问题

我制作了一个变体类型来代替 boost::variant。我的工作是将当前类型的索引存储在可能类型的列表中,并将数据存储在一个字节数组中,该数组有足够的空间来存储最大的类型。

现在,当我向这个变体类型写入一个值时,麻烦就来了。我使用以下内容:

崩溃的行是将数据存储到内部缓冲区的行。如您所见,我只是将字节数组直接转换为所需类型的指针。在尝试写入某些值时,这会给我带来错误的地址信号和总线错误。

我在 64 位系统上使用 GCC。如何设置字节数组的对齐方式以确保数组的地址是 64 位对齐的?(或与我可能将此项目移植到的任何架构正确对齐)。

编辑:谢谢大家,但错误在其他地方。显然,英特尔并不真正关心对齐。对齐的东西更快但不是强制性的,并且程序以这种方式运行良好。我的问题是我在写东西之前没有清除数据缓冲区,这给某些类型的构造函数带来了麻烦。但是,我不会将问题标记为已回答,以便更多人可以给我关于对齐的提示;)

0 投票
4 回答
22306 浏览

c++ - boost::variant 用法

我正在通过 wxWidgets 开发 GUI 应用程序。它有 2 个部分:GUI 部分和“逻辑”部分。我想让逻辑部分完全独立于 wxWidgets。但是 GUI 中的一个组件返回 wxVariant,我需要在逻辑部分使用它。

所以我正在寻找一种将 wxVariant “转换”为 boost::variant 的方法

wxVariant 的工作方式如下:

所以我在想类似的东西

是否可以像这样使用 boost::Variant (或 boost::Any)?

0 投票
5 回答
36333 浏览

vba - 如何检查变量数组是否未分配?

在我的监视窗口中,这显示为

如何检查以下内容:

或者

这基本上是我想要完成的,但第一个不起作用,第二个不存在。