Basic Types
Warning: JavaFX has no assert support yet! This reference just acts as if it did. (more)
assert(true); // assertions must be true
assert(not false); // "not" instead of "!"
assert(!false); // "!" not defined
assert(true and true); // logical and, like Java's && (more)
assert(true or false); // logical or, like Java's || (more)
assert(true instanceof java.lang.Boolean);
assert(false instanceof java.lang.Boolean);
assert(1 == 1); // equal
assert(1 != 2); // not equal
assert(2 > 1); // greater than
assert(2 >= 1); // greater or equal
assert(1 < 2); // less than
assert(1 <= 2); // less or equal
assert("foo" == "foo"); // == and != compare Strings (unlike Java) (more)
assert("foo" != "bar");
def a = 1; assert(a == 1); // def defines variables that can not be overwritten
a = 2; // must not modify def variables
var b = 1; assert(b == 1); // var declares a regular variable
b = 2; assert(b == 2);
var a, b; // one var or def per variable allowed
var c = 1; c = "foo"; // c is Integer because of the initial assignment (more)
var d : Integer = 1; d = 2; // explicit type declaration
var e : Boolean = true; e = 5; // incompatible type
var f : Object = 1; f = "foo"; // Object allows all values (more)
def g : String = null; // reference types can be null
def h : Integer = null; // ..but not built-ins like Integer(more)
var x = 0;
var y = 2 on replace { x++; }; // on replace clause
assert(x == 1); // called on initial assignment
y = 0; assert(x == 2); // and after additional assignments
assert(5 < 10); // decimal Integer literal
assert(26 == 0x1a); // hexadecimal
assert(10 == 012); // octal
assert(1 instanceof Integer);
var x : Integer; assert(x == 0); // default value 0
var y : Integer = null; // Integer can not be null
assert(1 + 2 == 3); // addition
assert(1 - 2 == -1); // subtraction
assert(6 * 7 == 42); // multiplication
assert(24 / 6 == 4); // division
assert(25 / 6 == 4);
assert(25 mod 6 == 3); // reminder
assert(-(1+1) == -2); // negation
var a = 1; assert(a++ == 1); assert(a == 2); // Post-increment
var b = 1; assert(++b == 2); assert(b == 2); // Pre-increment
var c = 1; assert(c-- == 1); assert(c == 0); // Post-decrement
var d = 1; assert(--d == 0); assert(d == 0); // Pre-decrement
var e = 1; e += 3; assert(e == 4); // add then assign
var f = 2; f -= 1; assert(f == 1); // subtract then assign
var g = 2; g *= 3; assert(g == 6); // multiply then assign
var h = 8; h /= 2; assert(h == 4); // divide then assign
assert(12.5 == 25.0/2.0); // Number / float literal
assert(0.75 == .75); // Omitting zero
assert(1.25e2 == 125); // exponential notation
assert(184e-2 == 0.184e1);
assert(0.75 instanceof java.lang.Number);
assert(0.75 instanceof java.lang.Float);
var x : Number; assert(x == 0.0); // default value 0.0
var y : Number = null; // Number can not be null
assert(2.5 + 4.5 == 7.0); // addition
assert(0.75 - 2 == -1.25); // subtraction
assert(0.5 * 7.0 == 3.5); // multiplication
assert(12.0 / 8 == 1.5); // division
var a = 1.5; assert(a++ == 1.5); assert(a == 2.5); // Post-increment
var b = 1.5; assert(++b == 2.5); assert(b == 2.5); // Pre-increment
var c = 1.5; assert(c-- == 1.5); assert(c == 0.5); // Post-decrement
var d = 1.5; assert(--d == 0.5); assert(d == 0.5); // Pre-decrement
var e = 1.5; e += 3.5; assert(e == 5.0); // add then assign
var f = 2.5; f -= 1; assert(f == 1.5); // subtract then assign
var g = 2.5; g *= 3.0; assert(g == 7.5); // multiply then assign
var h = 8.6; h /= 2; assert(h == 4.3); // divide then assign
assert(2.5 + 2 + 5.5 == 10); // type conversion Integer <-> Number
assert("foo" == 'foo'); // double-quote and single-quote are equivalent
assert(" ' " == ' \' ' and ' " ' == " \" "); // back-slash escape
assert("\n".charAt(0) == 10); // back-slash newline (more)
var x: String; assert(x == ""); // default empty string
assert("" == null); // null is empty
assert("foo" instanceof String);
assert("Number {2+3}." == "Number 5."); // Embedded expression
def a = "foo"; def b = "bar"; assert("{a}{b}" == "foobar");
assert(a + b == "foobar"); // no + operator for Strings
assert("foo {'bar'}" == "foo bar");
assert("{"foo {"bar"}"}" == "foo bar"); // Nested expressions
assert(1s == 1000ms); // 1 second is 1000 milliseconds
assert(1m == 60s); // 1 minute is 60 seconds
assert(1h == 60m); // 1 hour is 60 minutes
assert(3600000ms == 1h); // 1 hour is 3600000 milliseconds
assert(1s instanceof Duration);
assert(0.5m == 30s); // non-integer duration units
assert(0.25h == 900s);
assert(1m + 30s == 90s); // duration arithmetic
assert(1m - 15s == 45 * 1000ms);
assert(1h / 10m == 6);
assert(1h / 10 == 6m);
assert((1h - 50m - 500s - 9500ms)/2 == 45.25s);
assert(10h * 5m); // illegal multiplication
assert(10s + 5); // illegal addition

