Conversions
HCL Detect Expression Language supports explicit conversions via casts using a function call syntax. The name of the function is the name of the type we want to cast to.
Examples:
- Casting an
Int32
to aString
:String(14)
yields"14"
- Casting a
String
to aDouble
:Double("4.5")
yields4.5
- Casting a
String
to aDouble
:Double("nan")
yieldsNaN
(not a number)
HCL
Detect Expression Language supports implicit conversions (aka coercions) as well.
When two integers of different types are involved in an operation, the one that has
the smaller number of bits is coerced into the wider type. When an integer is
involved in an operation with a Double
it is coerced into a
Double
. Also note that, in such operations,
Int64
values that cannot be represented exactly will be rounded
to the closest Double
value.
Examples:
- Coercion with integers of different bit-lengths:
count/2
has typeInt64
, assumingcount
is of typeInt64
(this has the same semantics as the expressioncount / Int64(2)
) - Coercion involving an
Int32
and aDouble
:timestamp / 1000
has typeDouble
, assumingtimestamp
is of typeDouble
(this has the same semantics as the expressiontimestamp / Double(1000)
)