如何将值的类型作为字符串?

Ode*_*Wat 18 nim-lang

我想知道是否可以在运行时从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)

  • 谢谢!爱它 :) (3认同)