问题标签 [reflect]

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 投票
1 回答
2010 浏览

go - 如何检查 reflect.Value 是否为零?

我有这个代码:

我想检查我的错误是否为零,但在我的代码中,它不起作用,因为它有不同的类型。我试着这样做:

所以它具有相同的类型,但值reflect.Value(reflect.ValueOf(nil))不是 nil,它是<invalid reflect.Value>.

0 投票
2 回答
320 浏览

python-3.x - SQLAlchemy:反映现有数据库的表无法正常工作

我目前正在为一个新项目评估 SQLAlchemy。在尝试反映现有数据库(postgres、oracle)的表时,我遇到了一些问题。

为了连接到 Oracle 数据库,正在使用以下代码:

在对如何组装连接字符串(tnsnames.ora我的系统上没有)进行了一些尝试和错误之后,我成功地建立了与远程 Oracle 数据库的连接。

在检查数据库并尝试检索可用表的名称时,我收到了一个空列表。

我实际上期望的是系统表或公共表会被列出。

接下来我尝试反映模式的数据库表SYS

所以我相应地修改了代码以消除警告

没有警告,而是一个例外。:(

在对网络进行了一些研究之后,似乎需要进行一些进一步的代码修改。

甚至不如之前的尝试成功。将列出的模式名称转换为小写字母会导致相同的结果。

所以也许reflect只能处理strings而没有lists

那里也没有运气!

也许无法反映系统表?所以让我们尝试用户特定的对象。

再次是已知的例外。

回到不推荐使用的调用版本。

也不例外,但也没有表,尽管在模式MYUSRMYUSR2.

指定架构时拆分list为。strings

所以这次尝试最终产生了预期的结果。:)

从这一切看来,

  1. 无法反映系统/公共表(数据库对象);
  2. 只能反映用户特定的表;
  3. 只有不推荐使用的反射版本有效;
  4. 在 Oracle 和 PostgreSQL 数据库中都可以观察到这种行为。

有什么我忽略的吗?我有什么误解?做错了,与实际意图不同?

我的环境包括

  • Ubuntu linux 16.04LTS;
  • 蟒蛇3.8;
  • SQLAlchemy 1.3.16;
  • cx_Oracle 7.3.0;
  • psycopg2 2.8.5;
  • 本地 Oracle 18c Instant 客户端;
  • 远程 Oracle 19c 数据库;
  • 本地 PostgreSQL 9.5 数据库。
0 投票
1 回答
48 浏览

go - 如何使用反射为未知结构赋值

结构可能包含 float32、int32、字符串或指向结构的指针。这是我的代码。但我不知道如何为里面的结构赋值。

0 投票
1 回答
493 浏览

typescript - 如何获取函数参数类型

我可以使用ReflectAPI轻松获取方法的参数类型:

但是,当我尝试获取函数的参数类型时,它总是返回未定义。我尝试过使用这些示例函数:

而且我还读到 TypeScript 仅在您装饰类和方法时才发出元数据。那么,如何获取函数的元数据呢?

0 投票
3 回答
196 浏览

json - JSON Unmarshal 不适用于 relect 创建的动态结构

我试图通过使用动态创建的结构来解析 JSON 文件,但显然我做错了什么。有人可以告诉我们我在这里做错了什么:

https://play.golang.org/p/C2I4Pduduyg

提前致谢。

0 投票
1 回答
97 浏览

go - 如何在 Go 中按名称设置结构字段的复合字段?

我有一个结构,其中一个字段是另一个结构,我想按名称(作为参数)访问这个结构。我跟着Using reflect,你如何设置结构字段的值?它适用于基本类型,但不适用于复合类型。

设置整数有效,但尝试设置“Px”失败并出现错误

0 投票
1 回答
906 浏览

go - 允许反射从 Go 中的结构中获取未导出的字段

我目前正在使用反射从结构中获取字段并将值作为接口值的一部分返回。我遇到了未导出字段的问题,我希望能够获取未导出的值并将它们与导出的字段一起返回。当我尝试从未导出的字段中获取值时,出现以下错误:

reflect.Value.Interface:无法返回从未导出的字段或方法获得的值 [已恢复]

我一直使用https://github.com/fatih/structs作为我的代码的基础,并希望它与未导出的字段一起使用。

当我val.Interface()在未导出的字段上调用我的 values 方法时出现错误。有没有办法通过反射来解决这个问题,所以它返回所有导出和未导出的字段值?

0 投票
1 回答
69 浏览

go - 将结构转换为切片结构

我试图通过字符串输入选择一个结构,然后根据返回的 JSON 对象或数组,解组 JSON。想办法将结构反映到切片结构上是否正确?如果是这样,如何通过反射来做到这一点?问候,彼得

0 投票
1 回答
151 浏览

pattern-matching - 模式匹配案例中的统一

我试图编写一个类型为forall n, option (n = 1).

我选择option作为reflect避免给出否定案例证明的替代方法。所以Some扮演角色ReflectT持有证明,None而不持有否定证明。

我已经完成了战术。a_nat_is_1_or_not是证明。我想我可以直接写定义,所以我尝试了。

但是 Coq 说

在自身模式匹配的情况下似乎无法is_1 n统一。truetrue

所以我尝试了一个更简单的例子。

有用。

a_nat_is_1_or_not'和 和有什么不一样every_truer_is_I?我错过了什么吗?我能做些什么来写一个有效的定义forall n, is_1 n = true -> n = 1.

0 投票
2 回答
199 浏览

go - Golang:在循环中更新切片以获取空接口

例如,我们有 3 个 CSV 文件,通用的是电子邮件列。在第一个文件中是名称和电子邮件,在另一个文件中是电子邮件(加上不同的信息)并且没有名称字段。因此,如果我需要根据第一个文件中的名称和 Еmail 的对应关系填写 2 和 3 文件字段名称,则比...我编写的代码如下:

在这段代码中,我不喜欢 func fixNames 的一部分,开关在哪里:

因为我只是在 *in.( SOME_TYPE ) 部分重复代码。我想要一个循环和一个针对不同类型的操作,名称和电子邮件字段所在的结构......

用反射来做这件事也是一个想法。像这样:

但我不知道下一步该怎么做,如何为 Name 添加v