I would like to know if it is possible to get the type (int32 / float64 / string) from a value in Nim at runtime?
I thought this would be possible with the "typeinfo" library but I can't figure it out!
EDIT: Got an answer and made this real quick:
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 )
To get the type of a variable in Python, you can use the built-in type() function. In Python, everything is an object. So, when you use the type() function to print the type of the value stored in a variable to the console, it returns the class type of the object.
The GetType() method of array class in C# gets the Type of the current instance. To get the type. Type tp = value. GetType();
The valueOf() method returns the primitive value of a string. The valueOf() method does not change the original string. The valueOf() method can be used to convert a string object into a string.
Close, it's in the typetraits module:
import typetraits var x = 12 echo x.type.name
You can use stringify operator $
, which has a overloaded signature of
proc `$`(t: typedesc): string {...}
For example,
doAssert $(42.typeof) == "int"
Note that nim manual encourages using typeof(x)
instead of type(x)
,
typeof(x) can for historical reasons also be written as type(x) but type(x) is discouraged.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With