问题标签 [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 投票
0 回答
90 浏览

go - 如何设置界面的字段?

我有一个切片[]interface{},里面有结构值。

当我尝试反映切片的元素以更新结构的字段时。我收到以下错误

恐慌:反射:reflect.Value.SetInt 使用不可寻址的值

在这里最小化代码:

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

0 投票
1 回答
1746 浏览

go - 使用反射,如何将值设置为结构字段(指针)

我尝试通过反射将值设置为结构字段(指针字段),但失败了。

  1. 我得到了一个结构字段的名称,所以使用 FieldByName 来获取该字段
  2. 该字段是一个指针。
  3. 我尝试使用 FieldByName().Set FieldByName().SetPointer 来设置值。

第一个代码:=======> ./test.go:14:50: 不能在 reflect.ValueOf(t).FieldByName("b") 的参数中使用 a (type *int) 作为类型 reflect.Value .Set ./test.go:14:50: reflect.ValueOf(t).FieldByName("b").Set(a) 用作值

第二个代码:=======> ./test.go:14:57: 不能使用 a (type *int) 作为类型 unsafe.Pointer 在参数中以 reflect.ValueOf(t).FieldByName("b") .SetPointer ./test.go:14:57: reflect.ValueOf(t).FieldByName("b").SetPointer(a) 用作值

我想使用反射使指针字段(名称“b”)分配一个空间并设置一个值。

0 投票
1 回答
38 浏览

go - []interface{} 的元素类型

如何获取运行时元素类型[]interface{}

我尝试了以下测试。

0 投票
1 回答
109 浏览

go - go reflect find by structtag

对于结构 A,是否有一种方法可以反映我可以通过 structtag 找到一个字段,例如

0 投票
1 回答
37 浏览

javascript - 当使用 Javascript 的 Reflect API 构建扩展另一个类的实例时,为什么索引数组是共享范围?

我已经使用Typescript playground构建了一个示例,但该行为与 typescript 无关。在代码中显示更容易一些(链接包括编译的 JS,对于那些希望忽略 TS 的人):

如果您扩展一个使用索引数组作为属性的类

然后从基础模型使用反射 API 创建其他实例,您可以根据构建后续模型的方式获得不同的行为。

如果您创建一个新对象来分配给_meta,它会按照您期望的方式工作:

但是如果您使用数组表示法分配给容器,则范围会受到污染,即它与源模型共享范围:

有人知道为什么吗?我可以通过说 _meta 属性有一个公共地址来模糊地证明事情的合理性,并且因为它是扩展的,所以没有new调用基本模型,因此使它变得通用;但是当它出现在单元测试之外时,这是一个很难记住的案例;尤其是在 PR 期间。

关于如何在仍然使用数组表示法的同时避免这种情况的任何建议都会很棒。

谢谢!

0 投票
1 回答
40 浏览

go - 附加两个数组的通用函数

无法弄清楚如何将从函数返回的 interface{} 转换为结构数组

作为一些实践的一部分,我试图创建一个函数,它可以采用 2 个某种类型的切片并将两者连接起来并返回切片。

代码可以在这里找到 - https://play.golang.org/p/P9pfrf_qTS1

我可能有不同类型结构的切片。我想连接它们并单独访问元素。如果有任何其他方法可以实现相同的目标,请告诉我。

0 投票
1 回答
64 浏览

go - 如何将值分配给反射字段()?

我遇到了这样的问题。如果它们的类型和字段名称相同,我需要比较两个结构。将值从酸分配到 dist。我写了一些代码,但在这里我可以分配 reflect.Field() 值。你可以帮帮我吗?我在下面创建了测试

0 投票
2 回答
1298 浏览

java - Java反射:转换来自类字段的整数

我最近遇到了以下错误,这让我很困惑。我已经导入了反射。我有一个类(称为工人),其字段是一个名为 numOfJobs 的私有 int。在 Worker 的构造函数中,numOfJobs 设置为 0。然后,在测试器类中,我创建了一个 worker 类型的实例:

这是包含错误的尝试框中的第三行。前两行打印:

这对我来说很有意义。但是,如果对象 privateFieldJobs.get(waterBenders[0]) 是“值”为 0 的 Integer 类型的对象,那么为什么 (int)privateFieldJobs.get(waterBenders[0]) 会抛出错误:

如果我要创建一个整数类型的普通对象,那么这种类型的转换通常可以工作。这个例子有什么特别之处?我想这与这个 Integer 对象来自 fields 数组的事实有关。

我的工人阶级本质上是:

任何帮助,将不胜感激。

0 投票
0 回答
41 浏览

javascript - 使用反射进行 javascript 类型检查

我目前正在使用以下内容来检查变量的类型:

但我的 eslint 规则是这样说的: 避免使用 Function.prototype.call,而是使用 Reflect.apply

可以这样使用反射吗?

0 投票
1 回答
26 浏览

pointers - Slice 的`reflect.Kind()` 存储在指针中时变成`Struct`

检查reflect.Kind()切片的 时,reflect正确地将其识别为slice未存储在指针中的时间:

输出:

但是,当切片存储在指针中时,reflect.Kind()将其标识为struct

输出:

我的问题是:

  1. 为什么会这样?

  2. 有没有办法将切片存储在指针中并且仍然将reflect.Kind()其标识为slice