1.5 KiB
1 - Variables
Variables defined using #= can't be changed (they are "final"), while the ones affected using the normal operator (=) can.
helloworld #= "Hello, World!"
2 - (Anonymous) Functions
You can make an anonymous functions using the following syntax:
getHelloWorld: ~String => {
return "Hello, World!"
}
~String
can be omitted, see #3.
Note that you can make getHelloWorld
final by replacing =>
with #=>
.
To define a named (and mandatorily final) function, replace =>
with >>
and put the (optional) return type before the function's name:
String getHelloWorld >> {
return "Hello, World!"
}
2.1 - Main
Main can be a variable named main
that contains an anonymous function, a function named main
or a function that has the as_main
attribute:
main #=> {}
main >> {}
as_main helloWorld >> {}
3 - Types
Types are inferred, which means that specifying types of variables or returned values is optional.
Note: While primitives types (String
, int
, double
, boolean
, float
) will be transpiled to their equivalents for the target of the transpiler, this is not the case for other types.
Every variable has a static type by default; it is possible to make a non-final variable dynamic by adding the dyn
/dynamic
attribute:
dyn helloWorld = 0
helloWorld = "Hello, World!"
The attributes mentioned above can also be used as a return type for functions/anonymous functions:
helloWorld: ~dynamic => { return 0 }
dyn helloWorld >> { return 0 }