Qore Programming Language Reference Manual
0.8.7
|
Starting in Qore 0.8.0, it is possible to restrict variables, class members, and function and method parameters to certain data types. This allows programmers to write safer code, as many more errors can be caught at parse time that would otherwise be caught at run time. Furthermore, providing type information to the parser allows Qore to implement performance optimizations by performing lookups and resolutions once at parse time rather than every time a variable or class member is accessed at run time.
When types are declared in a parameter list, functions and methods can be overloaded as well.
The types in the following table can be used as well as any class name or '*classname'
(i.e. an asterix followed by the class name), meaning either the given class or NOTHING (no value).
Data Type Declaration Names
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
int | Integer | Integer | Restricts values Integer values |
float | Float or Integer | Float | Restricts values to Float values |
number | Number, Float, or Integer | Number | Restricts values to Number values |
bool | Boolean | Boolean | Restricts values to Boolean values |
string | String | String | Restricts values to String values |
date | Date | Date | Restricts values to Date values; values may be either absolute or relative |
binary | Binary | Binary | Restricts values to Binary values |
hash | Hash | Hash | Restricts values to Hash values |
list | List | List | Restricts values to List values |
object | Object | Object | Restricts values to Object values |
<classname> | Object | Object | Restricts values to objects of the specific class given; either the class name can be given (ex: Mutex or a qualified path to the class: Qore::Thread::Mutex) |
null | NULL | NULL | Restricts values to Qore's NULL type; this type has few (if any) practical applications and has been included for completeness' sake |
nothing | NOTHING | NOTHING | Restricts values to Qore's NOTHING type; this type is mostly useful for declaring that a function or method returns no value |
timeout | Integer, Date | Integer | Accepts Integer, Date and converts dates to an integer value representing milliseconds and returns the integer; incoming integers are assumed to represent milliseconds |
softint | Integer, Float, Number, Boolean, String, NULL | Integer | Accepts Integer, Float, Boolean, String, NULL and converts non-integer values to an integer and returns the integer |
softfloat | Integer, Float, Number, Boolean, String, NULL | Float | Accepts Integer, Float, Boolean, String, NULL and converts non-float values to a float and returns the new value |
softnumber | Integer, Float, Number, Boolean, String, NULL | Float | Accepts Integer, Float, Boolean, String, NULL and converts non-float values to a float and returns the new value |
softbool | Integer, Float, Number, Boolean, String, NULL | Boolean | Accepts Integer, Float, Boolean, String, NULL and converts non-boolean values to a boolean and returns the new value |
softstring | Integer, Float, Number, Boolean, String, NULL | String | Accepts Integer, Float, Boolean, String, NULL and converts non-string values to a string and returns the new value |
softdate | Integer, Float, Number, Boolean, String, Date, NULL | Date | Accepts Integer, Float, Boolean, String, Date, and NULL and converts non-date values to a date and returns the new value |
softlist | all types | List | Accepts all types; NOTHING is returned as an empty list; a list is returned unchanged, and any other type is returned as the first element of a new list |
data | String or Binary | same as received | Restricts input to String and Binary and returns the same type |
code | Closures, Call References | same as received | Restricts values to closures and call references |
reference | References | the type the reference points to | Restricts values to references to lvalues |
*int | Integer or NOTHING | same as received | Restricts values to Qore's Integer or NOTHING types |
*float | Float or NOTHING | same as received | Restricts values to Qore's Float or NOTHING types |
*bool | Boolean or NOTHING | same as received | Restricts values to Qore's Boolean or NOTHING types |
*string | String or NOTHING | same as received | Restricts values to Qore's String or NOTHING types |
*date | Date or NOTHING | same as received | Restricts values to Qore's Date or NOTHING type; values may be either absolute or relative date/time values |
*binary | Binary or NOTHING | same as received | Restricts values to Qore's Binary or NOTHING types |
*hash | Hash or NOTHING | same as received | Restricts values to Qore's Hash or NOTHING types |
*list | List or NOTHING | same as received | Accepts either a List or NOTHING |
*object | Object or NOTHING | same as received | Accepts either an Object or NOTHING |
*<classname> | Object of the given class or NOTHING | same as received | Restricts values to objects of the specific class given or NOTHING; either the class name can be given (ex: *Mutex or a qualified path to the class: *Qore::Thread::Mutex) |
*data | String, Binary, or NOTHING | same as received | Restricts input to String, Binary, or NOTHING and returns the same type |
*code | Closures, Call References, NOTHING | same as received | Restricts values to closures, call references and NOTHING |
*timeout | Integer, Date or NOTHING | Integer or NOTHING | Accepts Integer, Date and converts dates to an integer value representing milliseconds and returns the integer; incoming integers are assumed to represent milliseconds. If no value is passed, then NOTHING is returned |
*reference | References or NOTHING | the type the reference points to | Restricts values to references to lvalues and NOTHING |
*softint | Integer, Float, Number, Boolean, String, NULL or NOTHING | Integer or NOTHING | Accepts Integer, Float, Number, Boolean, String, NULL and converts non-integer values to an integer and returns the integer. If no value is passed, then NOTHING is returned |
*softfloat | Integer, Float, Number, Boolean, String, NULL or NOTHING | Float or NOTHING | Accepts Integer, Float, Number, Boolean, String, NULL and converts non-float values to a float and returns the new value. If no value is passed, then NOTHING is returned |
*softnumber | Integer, Float, Number, Boolean, String, NULL or NOTHING | Number or NOTHING | Accepts Integer, Float, Number, Boolean, String, NULL and converts non-number values to a number and returns the new value. If no value is passed, then NOTHING is returned |
*softbool | Integer, Float, Number, Boolean, String, NULL or NOTHING | Boolean or NOTHING | Accepts Integer, Float, Number, Boolean, String, NULL and converts non-boolean values to a boolean and returns the new value. If no value is passed, then NOTHING is returned |
*softstring | Integer, Float, Number, Boolean, String, NULL or NOTHING | String or NOTHING | Accepts Integer, Float, Number, Boolean, String, NULL and converts non-string values to a string and returns the new value. If no value is passed, then NOTHING is returned |
*softdate | Integer, Float, Number, Boolean, String, Date, NULL or NOTHING | Date or NOTHING | Accepts Integer, Float, Number, Boolean, String, Date, and NULL and converts non-date values to a date and returns the new value. If no value is passed, then NOTHING is returned |
*softlist | all types | List or NOTHING | Accepts all types; NOTHING and list values are returned as the same value; any other type is returned as the first element of a new list |
any | any | same as received | Provides no restrictions on the type of value it receives and returns the same value |
int Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
int | Integer | Integer | Restricts values to Qore's Integer type |
float Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
float | Float or Integer | Float | Restricts values to Qore's Float type |
number Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
number | Number, Float, or Integer | Number | Restricts values to Qore's Number type |
bool Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
bool | Boolean | Boolean | Restricts values to Qore's Boolean type |
string Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
string | String | String | Restricts values to Qore's String type |
date Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
date | Date | Date | Restricts values to Qore's Date type; date/time values can be either absolute or relative |
binary Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
binary | Binary | Binary | Restricts values to Qore's Binary type |
hash Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
hash | Hash | Hash | Restricts values to Qore's Hash type |
list Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
list | List | List | Restricts values to Qore's List type |
object Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
object | Object | Object | Restricts values to Qore's Object type; note that any class name can also be used as a type restriction directly |
<classname> Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
any class name | Object of the particular class given | Object of the particular class given | Restricts values to objects of the particular class given; subclasses are also accepted |
null Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
null | NULL | NULL | Restricts values to Qore's NULL type; this type has few (if any) practical applications and has been included for completeness' sake |
nothing Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
nothing | NOTHING | NOTHING | Restricts values to Qore's NOTHING type; this type is mostly useful for declaring that a function or method returns no value |
timeout Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
timeout | Integer, Date | Integer | Accepts Integer, Date values and converts dates to an integer value representing milliseconds and returns the integer; incoming integers are assumed to represent milliseconds |
softint Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softint | Integer, Float, Number, Boolean, String, NULL | Integer | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-integer values to an integer and returns the integer |
softfloat Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softfloat | Integer, Float, Number, Boolean, String, NULL | Float | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-float values to a float and returns the float |
softnumber Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softnumber | Integer, Float, Number, Boolean, String, NULL | Float | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-number values to a number and returns the number |
softbool Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softbool | Integer, Float, Number, Boolean, String, NULL | Boolean | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-boolean values to a boolean and returns the boolean |
softstring Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softstring | Integer, Float, Number, Boolean, String, NULL | String | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-string values to a string and returns the string |
softdate Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softdate | Integer, Float, Number, Boolean, String, Date, NULL | Date | Accepts Integer, Float, Number, Boolean, String, Date, and NULL values and converts non-date values to a date and returns the date |
softlist Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
softlist | all data types | List | Accepts all data types; NOTHING is returned as an empty list; a list is returned unchanged, and any other type is returned as the first element of a new list |
data Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
data | String or Binary | same as received | Restricts values to String and Binary |
code Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
code | Closures, Call References | same as received | Restricts values to Closures and Call References |
"closure"
and "callref"
are accepted as synonyms for "code"
(they are not more specific than "code"
but rather provide identical type restrictions)reference Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
reference | References | the type the reference points to | Requires a reference to an lvalue to be assigned |
*int Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*int | Integer or NOTHING | same as received | Restricts values to Integer and NOTHING |
*float Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*float | Float or NOTHING | same as received | Restricts values to Float and NOTHING |
*number Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*number | Number or NOTHING | same as received | Restricts values to Number and NOTHING |
*bool Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*bool | Boolean or NOTHING | same as received | Restricts values to Boolean and NOTHING |
*string Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*string | String or NOTHING | same as received | Restricts values to String and NOTHING |
*date Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*date | Date or NOTHING | same as received | Restricts values to Date and NOTHING |
*binary Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*binary | Binary or NOTHING | same as received | Restricts values to Binary and NOTHING |
*hash Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*hash | Hash or NOTHING | same as received | Restricts values to Hash and NOTHING |
*list Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*list | List or NOTHING | same as received | Restricts values to List and NOTHING |
*list Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*list | Object or NOTHING | same as received | Restricts values to Object and NOTHING |
*<classname> Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
* any class name | Object of the particular class given or NOTHING | same as received | Restricts values to objects of the particular class given or NOTHING; subclasses are also accepted |
*data Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*data | String, Binary, or NOTHING | same as received | Restricts values to String, Binary, and NOTHING |
*code Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*code | Closures, Call References, or NOTHING | same as received | Restricts values to Closures, Call References, and NOTHING |
*timeout Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*timeout | Integer, Date, or NOTHING | Integer or NOTHING | converts dates to an integer value representing milliseconds and returns the integer; incoming integers are assumed to represent milliseconds; also accepts NOTHING and returns NOTHING |
reference Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
reference | References or NOTHING | the type the reference points to | Requires a reference to an lvalue to be assigned or NOTHING |
*softint Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softint | Integer, Float, Number, Boolean, String, NULL, NOTHING | Integer or NOTHING | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-integer values to an integer and returns the integer; also accepts NOTHING and returns NOTHING |
*softfloat Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softfloat | Integer, Float, Number, Boolean, String, NULL, NOTHING | Float or NOTHING | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-float values to a float and returns the float; also accepts NOTHING and returns NOTHING |
*softnumber Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softnumber | Integer, Float, Number, Boolean, String, NULL, NOTHING | Number or NOTHING | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-number values to a number and returns the number; also accepts NOTHING and returns NOTHING |
*softbool Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softbool | Integer, Float, Number, Boolean, String, NULL, NOTHING | Boolean or NOTHING | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-boolean values to a boolean and returns the boolean; also accepts NOTHING and returns NOTHING |
*softstring Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softstring | Integer, Float, Number, Boolean, String, NULL, NOTHING | String or NOTHING | Accepts Integer, Float, Number, Boolean, String, and NULL values and converts non-string values to a string and returns the string; also accepts NOTHING and returns NOTHING |
*softdate Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softdate | Integer, Float, Number, Boolean, String, Date, NULL, NOTHING | String or NOTHING | Accepts Integer, Float, Number, Boolean, String, Date, and NULL values and converts non-date values to a date and returns the date; also accepts NOTHING and returns NOTHING |
*softlist Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
*softlist | all data types | List or NOTHING | Accepts all data types; NOTHING is returned as NOTHING directly; a list is returned unchanged, and any other type is returned as the first element of a new list |
any Type Restriction
Name | Accepts Qore Type(s) | Returns Qore Type(s) | Description |
any | all data types | all data types | Accepts all data types and returns the same data type |