Difference between revisions of "Type Coercion"
(fixed erroneous description of Infinity) |
|||
Line 3: | Line 3: | ||
Known type coercion rules: | Known type coercion rules: | ||
− | + | <c>null * 3 == #@!$</c> | |
Any statement that begins with `null` is a compiler error, but this may change in the future. | Any statement that begins with `null` is a compiler error, but this may change in the future. | ||
`(null)` is okay though. | `(null)` is okay though. | ||
− | + | <c>3 * null == 0</c> | |
Multiplying by null yields 0. | Multiplying by null yields 0. | ||
− | + | <c>3 / null == Infinity</c> | |
In division, null acts a lot like `0`. | In division, null acts a lot like `0`. | ||
− | + | <c>3 + "3" == "33"</c> | |
If an expression contains a string, the entire expression will be coerced into a string. | If an expression contains a string, the entire expression will be coerced into a string. | ||
− | + | <c>"3" * 5 == "33333</c> | |
Multiplying a string by a number will replicate the string. | Multiplying a string by a number will replicate the string. | ||
− | + | <c>"1234" / 2 == "12"</c> | |
Dividing a string by a number will divide the length, then take a substring. | Dividing a string by a number will divide the length, then take a substring. | ||
− | + | <c>1/0 == "INF" | "Infinity"</c> | |
All numerical math is done according to standard IEEE floating-point rules, including well-defined behavior for Inf and NaN. However, conversion of Inf and NaN to a string is undefined (implementation-dependent). | All numerical math is done according to standard IEEE floating-point rules, including well-defined behavior for Inf and NaN. However, conversion of Inf and NaN to a string is undefined (implementation-dependent). |
Revision as of 16:52, 20 February 2024
WIP
Known type coercion rules:
null * 3 == #@!$
Any statement that begins with `null` is a compiler error, but this may change in the future.
`(null)` is okay though.
3 * null == 0
Multiplying by null yields 0.
3 / null == Infinity
In division, null acts a lot like `0`.
3 + "3" == "33"
If an expression contains a string, the entire expression will be coerced into a string.
"3" * 5 == "33333
Multiplying a string by a number will replicate the string.
"1234" / 2 == "12"
Dividing a string by a number will divide the length, then take a substring.
1/0 == "INF" | "Infinity"
All numerical math is done according to standard IEEE floating-point rules, including well-defined behavior for Inf and NaN. However, conversion of Inf and NaN to a string is undefined (implementation-dependent).