Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
programmiersprachen:scala [2015/10/10 16:40] – angelegt phreazer | programming_languages:scala [2017/02/19 15:46] (current) – ↷ Seite von programmiersprachen:scala nach programming_languages:scala verschoben phreazer | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Scala | + | ====== |
+ | |||
+ | |||
+ | **Sca**lable **la**nguage | ||
+ | |||
+ | ===== Start ===== | ||
- | ====== Start ====== | ||
* No primitive types, everything is an object | * No primitive types, everything is an object | ||
+ | * No semicolon | ||
+ | * Object is a singleton | ||
+ | * Methods can be defined private or protected. If no modifer is given, method is public. | ||
+ | * No static methods | ||
- | ===== Hello World ===== | + | ==== Hello World ==== |
<code scala> | <code scala> | ||
- | | + | object HelloWorld { |
- | def main(args: Array[String]) { | + | def main(args: Array[String]) { |
- | println(" | + | println(" |
- | } | + | } |
- | < | + | } |
- | } | + | </code> |
+ | |||
+ | ===== Control structures ===== | ||
+ | |||
+ | if/ | ||
+ | |||
+ | ==== for loop ==== | ||
+ | <code scala> | ||
+ | for (i <- 1 to 10) println(i) | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code scala> | ||
+ | |||
+ | // 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+" | ||
+ | |||
+ | // filter | ||
+ | | ||
+ | j <- 1 to 6 | ||
+ | if (i % 2 == 0) | ||
+ | if (j % 2 != 0)} println(i+" | ||
+ | // yield | ||
+ | val list: List[Int] = List(1, | ||
+ | val result = for (i <- list) yield i * 2 | ||
+ | println(result) | ||
+ | </ | ||
+ | ==== match ==== | ||
+ | Implizites break | ||
+ | |||
+ | <code scala> | ||
+ | val iValue = 3 | ||
+ | iValue match{ | ||
+ | case 1 => println(" | ||
+ | case _ => println(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Singleton objects ===== | ||
+ | |||
+ | There are no static methods/ | ||
+ | <code scala> | ||
+ | object ScalaObject { | ||
+ | |||
+ | val b = 5 | ||
+ | |||
+ | def test(a: Double) : Double = { | ||
+ | 3.* + b | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Companion object ===== | ||
+ | |||
+ | Prerequisite: | ||
+ | |||
+ | ===== Case classes ===== | ||
+ | |||
+ | * Use a factory method for construction | ||
+ | * All passed parameters are a val-variable of the class | ||
+ | * Can be used for pattern matching | ||
+ | * Implement toString, hashCode, equals and have a copy method | ||
+ | |||
+ | <code scala> | ||
+ | case class Person (firstName : String, lastName : String, age : Int){ | ||
+ | def isAdult : Boolean = if (age >= 18) true else false | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Inheritance ===== | ||
+ | |||
+ | Scala doesn' | ||
+ | |||
+ | 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. | ||
+ | |||
+ | |||
+ | ==== Abstract classes ==== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ==== Packages object ==== | ||
+ | |||
+ | Objects which are visible in a whole package. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Identity and equality ===== | ||
+ | |||
+ | ==-Operator checks equality (identity in Java) | ||
+ | eq-Operator checks identity | ||
+ | |||
+ | eq and ne are only defined for clases of type scala.AnyRef. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Learning sources ===== | ||
+ | |||
+ | http:// |