2015-02-05 16 views
12

Tôi muốn biết nếu có thể nhận được loại (int32/float64/string) từ một giá trị trong Nim tại thời gian chạy?Cách lấy loại giá trị dưới dạng chuỗi?

Tôi nghĩ điều này có thể thực hiện được với thư viện "typeinfo" nhưng tôi không thể hiểu được!

EDIT: Got một câu trả lời và thực hiện điều này thật nhanh chóng:

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 

Output:

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

Trả lời

14

Đóng, đó là trong module typetraits:

import typetraits 

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

Cảm ơn bạn! Yêu nó :) – OderWat

Các vấn đề liên quan