2015-02-05 6 views
12

런타임시 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 

출력 :

MyObject (
    a: int = 3 
    b: int = 4 
    s: string = abc 
) 

답변

14

닫기,가 typetraits 모듈입니다 :

import typetraits 

var x = 12 
echo x.type.name 
+3

감사합니다! 그것을 사랑해 :) – OderWat

관련 문제