我想知道是否可以在运行时从Nim中的值获取类型(int32/float64/string)?
我认为这可以通过"typeinfo"库实现,但我无法理解!
编辑:得到答案,并迅速做到这一点:
import typetraits
type
MyObject = object
a, b: int
s: string
let obj = MyObject(a: 3, b: 4, s: "abc")
proc dump_var[T: object](x: T) =
echo x.type.name, " ("
for n, v in fieldPairs(x):
echo(" ", n, ": ", v.type.name, " = ", v)
echo ")"
dump_var obj
Run Code Online (Sandbox Code Playgroud)
输出:
MyObject (
a: int = 3
b: int = 4
s: string = abc
)
Run Code Online (Sandbox Code Playgroud)
def*_*ef- 21
关闭,它在typetraits模块中:
import typetraits
var x = 12
echo x.type.name
Run Code Online (Sandbox Code Playgroud)