问题标签 [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.
delphi - 测试强制转换 OleVariant 是否会引发异常(不引发异常)
在 Delphi 中,我想确定是否可以将特定的 OleVariant 转换为特定的数据类型,如果不能,则不会引发异常。异常不适用于程序流程,对吗?
我想要的是这样的,其中 Type 可以是 OleVariant 支持的任何东西:
我不想要的是
变量无法转换为布尔值的情况只是经常发生的正常情况,并不表示任何类型的错误。
c++ - 组合 boost::exception 和 boost::variant 的问题
当包含 boost::exception 时,我对两级变体结构有奇怪的问题。我有以下代码片段:
当我尝试编译它时,出现以下错误:
代码片段尽可能地简化,实际代码中的结构要复杂得多,每个变体都有五个子类型。
当我删除#include boost/exception/all 并尝试以下测试片段时,程序编译正确:
有人可以告诉我如何定义运算符 << 以便即使在使用 boost::Exception 时也能正常工作?
谢谢并恭祝安康
瑞克
c++ - 检查 boost::variant为空
我的程序中有一个 boost::variant ,我想检查变体本身是否已初始化,以及其中一种类型中是否包含值。
我已经在变体上尝试了 empty() ,但这似乎不起作用。也不会检查 NULL。
有人知道如何检查吗?
编辑:好的,它似乎永远不会为空,但它所包含的类型中并不总是有一个值,那么如何检查无值情况?
arrays - 变体类型的 VBA 数组作为类属性
我有一个类可以处理几个数字数组(双精度类型),还需要处理一个描述符数组,其中包括字符串和整数的混合,需要相应地用作字符串和数字。所以我决定创建一个变体类型的数组属性(不是包含数组的变体)。但是这个似乎不起作用,而类型 double 数组则起作用。
具体来说,这种类型的双数组属性工作正常,一次接收或返回一个数组:
但是,当我使用变体类型的数组尝试相同的模式时,Get 属性返回一个空/未分配的变体数组:
将数组包装在变体中(而不是具有变体类型的数组),当然可以正常工作:
但是,在属性中,适用于 Dim D() As Double 的模式不适用于 Dim V() As Variant 的已知和标准吗?
c# - VB6(dll 文件)中的函数,带有变体类型的参数,与调用中一样。网?
我有一个带有方法的dll。此方法在 vb6 中接受一个对象参数(在 .net 中),它被定义为一个变体,它是一个字符串向量。
如何在传递字符串数组的.net 上调用此方法?
请给我一个例子
谢谢
recursion - 变体、递归函数和类型推断
我是 OCaml 的新手,但过去两天都在工作,以便更好地了解如何使用它。我最近一直在做很多事情,但有些事情阻碍了我前进。
我正在尝试在 OCaml 中实现 evalexpr。使用这种语言很容易,你会说:所以我想,我第一次使用常规整数,效果很好。但现在我正在尝试使用我的 OWN 类型和我自己的函数来解决操作:当然这并不像我预期的那么容易。
这对我来说似乎没问题......但编译器不同意。我认为“(evalexpr a)”的类型很明显是MyInt.myint,因为它是evalexpr函数可以返回的唯一最终返回值:不过,编译器认为它的类型是“expr - > MyInt.myint” .
这是否意味着它不应用函数 evalexpr 并返回函数本身?如果是这样,为什么它会那样做?我就是想不通。而且我想不出另一种方法来做我想要在这里实现的目标。
c++ - 在 C++0x 中创建静态类型的变体
我想知道,是否可以在 C++0x 中创建一个静态类型的变体(其行为类似于自动):
当我们将 v 分配给 int 以外的值时,它不会编译:
到目前为止,我还没有找到任何优雅的解决方案。
variant - 变体类型存储和对齐问题
我制作了一个变体类型来代替 boost::variant。我的工作是将当前类型的索引存储在可能类型的列表中,并将数据存储在一个字节数组中,该数组有足够的空间来存储最大的类型。
现在,当我向这个变体类型写入一个值时,麻烦就来了。我使用以下内容:
崩溃的行是将数据存储到内部缓冲区的行。如您所见,我只是将字节数组直接转换为所需类型的指针。在尝试写入某些值时,这会给我带来错误的地址信号和总线错误。
我在 64 位系统上使用 GCC。如何设置字节数组的对齐方式以确保数组的地址是 64 位对齐的?(或与我可能将此项目移植到的任何架构正确对齐)。
编辑:谢谢大家,但错误在其他地方。显然,英特尔并不真正关心对齐。对齐的东西更快但不是强制性的,并且程序以这种方式运行良好。我的问题是我在写东西之前没有清除数据缓冲区,这给某些类型的构造函数带来了麻烦。但是,我不会将问题标记为已回答,以便更多人可以给我关于对齐的提示;)
c++ - boost::variant 用法
我正在通过 wxWidgets 开发 GUI 应用程序。它有 2 个部分:GUI 部分和“逻辑”部分。我想让逻辑部分完全独立于 wxWidgets。但是 GUI 中的一个组件返回 wxVariant,我需要在逻辑部分使用它。
所以我正在寻找一种将 wxVariant “转换”为 boost::variant 的方法
wxVariant 的工作方式如下:
所以我在想类似的东西
是否可以像这样使用 boost::Variant (或 boost::Any)?
vba - 如何检查变量数组是否未分配?
在我的监视窗口中,这显示为
如何检查以下内容:
或者
这基本上是我想要完成的,但第一个不起作用,第二个不存在。