# Literals val number = 85; #TODO: Decide on default integer type val number = 85.0; # f64 is the default decimal type val number: u16 = 27; # If you want more control over memory usage you can specify a integer type val number: u16 = 27u16; val number: u16 = 0x1B; val number: u16 = 0x1Bu16; val number: BigInt = BigInt::from(73); #TODO: naming val number: BigFloat = BigFloat::from(73); #TODO: naming val chars: char = ' '; val strings: String = "Normal string"; val strings: String = "Formated strings ${number}"; val strings: String = """String literals"""; val regex: Regex = /[0-9A-F]/; val list: List = [1, 2, 3, 2]; val sets: Set = {1, 2, 3, 2}; val maps = { "foo": 48, "bar": 97, }; val maps: Map = { "foo": 48, "bar": 97, }; # Types can be 'any' and be assigned to anything var anything: any = "I'm a string right now"; anything = 53; anything = "I was a number- but now I'm a string again"; # You can use the `is` keyword to check if a type is something if anything is String { # Now I can call functions that take a String anything.split('-'); } # TODO: HMMMMMMM- if anything is Some(it) {} # You can use the `in` keyword to check if something is in a collection if "hello" in ["hello", "hola"] { # } # ... or a range if 5 in 2..17 { # } # ... or anything that implements Contains if 'p' in "Apple" {} # impl Contains for String if "ppl" in "Apple" {} # impl Contains for String if /[0-9]/ in "24" {} # impl Contains for String # `value!` Can be used to bubble up an Option or Result # `value!!` Can be used to panic on None or Error # `value?` Can be used to optionally chain # `value ?: 0` Can be used to provide a default maps["foo"] # Option maps["foo"]!! # 48 - Panics in None case maps["foo"]! # 48 - Caller of function is responsible for None case maps["foo"]?.signum() ?: 0 # 1 - Provide a default for None case maps.keys() # ["foo", "bar"] maps.values() # [48, 97] # Spreading val lhs = [1, 2, 3]; val rhs = [4, 5, 6]; val combined_list = [..lhs, ..rhs, 2, 4, 6]; val combined_sets = {..lhs, ..rhs, 2, 4, 6};