Values
A value in Neko can be one of the following :
- Null: the special value
null
is used for uninitialized variables as well as programmer/language specific coding techniques. - Integer: integers can be represented in either decimal form (such as
12345
or -12
), or hexadecimal (0x1A2B3C4D
). - Floats: floating-point numbers are represented using a period (such as
12.345
or -0.123
). - Boolean: booleans are represented by the following two lowercase identifiers:
true
and false
. - Strings: strings are surrounded by double quotes (for example:
"foo"
, or "hello,\nworld !"
, or "My name is \"Bond\\James Bond\"."
). Neko strings are mutable, which means that you can modify them. - Arrays: arrays are an integer-indexed table of values, with the index starting at 0. They provide fast random access to their elements.
- Objects: an object is a table, which associates an identifier or a string to a value. How objects are created and managed is explained later.
- Functions: a function is also a value in Neko, and thus can be stored in any variable.
- Abstract: an abstract value is C data that cannot be accessed from a Neko program.
Some Notes:
- Integers have 31 bits for virtual machine performance reasons. An API for full 32-bit integers is available through a standard library.
- Floating-point numbers are 64-bit double-precision floating points values.
- Strings are sequences of 8-bit bytes. A string can contain
\0
characters. The length of a string is determined by the number of bytes in it, and not by the number of characters before the first \0.