Base Syntax for Expressions
Scala is an expression-based language, which means that everything is an expression (in the right-hand side of function and value/variable definitions).
Some of the base expressions are:
- Primitive expression: Constant or value/variable name.
- Function calls: These can be:
- Usual function calls
f(x, y)
. - Operator call syntax:
- binary:
x + y
.
Note
Any method with an argument can be used as a binary operator. A set of predefined binary operators are similar to Java:
- Usual function calls
- unary:
!x
- Constructors:
new x
creates an instance of class x. - Assignments to mutable variables:
y = 3
: Assigns a value of3
toy
.x = 3
: This is a compiler error, and a value can't be assigned.
- Block:
{ A; B }
The value of a block expression is the last expression. Note that
;
can be omitted ifA
andB
are situated on different lines. The syntax for this is shown as follows:{ A B }
The preceding syntax will have the same output as { A; B }
.
- Control structures
if
statement:> if (1 == 1) "A" else "B" - let's eval one in REPL
- match/case expressions:
> x match { case "Jon" => doSomethingSpecialForJon() case "Joe" => doSomethingSpecialForJoe() case _ => doForAll() }
- Loops:
while
/do
var i=0 var s=0 while(i < 10) { s = s+i i = i +1 }
Do
/while
Foreach
,for
Shortcuts for height-order functions will be described in detail in, Chapter 4, Scala Collections.
We'll look at defining a main function which prints something onscreen and calls the main function.
- You should have already opened
project1
. If you haven't, import it into the IDE. - Insert the new method inside the object definition.
- Insert call at the
main
method.
The full method should look something like this:
object Chatbot1 {def printHello():Unit = { println("Hello")}def main(args: Array[String]): Unit = { printHello() … // unchanged code here } }