Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
programmiersprachen:scala [2015/10/10 17:00] – [Case classes] 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**nga | ||
- | ====== Start ====== | + | **Sca**lable **la**nguage |
+ | |||
+ | ===== Start ===== | ||
* No primitive types, everything is an object | * No primitive types, everything is an object | ||
Line 12: | Line 14: | ||
- | ===== Hello World ===== | + | ==== Hello World ==== |
<code scala> | <code scala> | ||
object HelloWorld { | object HelloWorld { | ||
Line 28: | Line 30: | ||
<code scala> | <code scala> | ||
for (i <- 1 to 10) println(i) | 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 | ||
+ | for {i <- 1 to 6 | ||
+ | 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 ==== | ==== match ==== | ||
Line 40: | Line 64: | ||
</ | </ | ||
- | ==== Singleton objects ==== | + | ===== Singleton objects |
There are no static methods/ | There are no static methods/ | ||
Line 54: | Line 78: | ||
</ | </ | ||
- | ==== Companion object ==== | + | ===== Companion object |
Prerequisite: | Prerequisite: | ||
- | ==== Case classes ==== | + | ===== Case classes |
* Use a factory method for construction | * Use a factory method for construction | ||
Line 71: | Line 95: | ||
</ | </ | ||
+ | ===== 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. | ||