Scalable language
if/else-Constructs have a return value
for (i <- 1 to 10) println(i)
// different steps for (i <- 4 to (17,3)) println(i) // other data types than int for (s <- myList) println(s) // multiple generators for (i <- 0 to 2; j <- 3 to 4) println(i+" "+j) // filter for {i <- 1 to 6 j <- 1 to 6 if (i % 2 == 0) if (j % 2 != 0)} println(i+" "+j) // yield val list: List[Int] = List(1,2,3,4) val result = for (i <- list) yield i * 2 println(result)
There are no static methods/vars in scala and singleton objects can't be constructed using a constructor with new.
object ScalaObject { val b = 5 def test(a: Double) : Double = { 3.* + b } }
Prerequisite: object and class have the same name and are defined in the same file. Companion objects can access their private variables. Singleton objects without companion clases are standalone objects.
case class Person (firstName : String, lastName : String, age : Int){ def isAdult : Boolean = if (age >= 18) true else false }
Scala doesn't support multiple inheritance.
class B(arg:Int) extends A {}
Functions can be overridden with overide before func definition.
Overridding classes, functions or variables can be forbidden with prefix final.
Difference to Traits: Abstract classes can have constructors. A class which inherits from an abstract class can't inherit from another.
The usage of override is optional.
Objects which are visible in a whole package.
==-Operator checks equality (identity in Java) eq-Operator checks identity
eq and ne are only defined for clases of type scala.AnyRef.