Feature | Kotlin | Scala |
---|---|---|
Function Keyword | fun | def |
Nullability | Default not nullable except by adding ? at the end of variable type | Null is discouraged, but no hard check |
Null Check | Use ?. and/or ?: | Use Option |
Lambda/Anonymous Functions | Need to be surrounded with {} | Can be used anywhere |
Covariant | [out T] | [+T] |
Contravariant | [in T] | [-T] |
Pattern Matching | (partial) when statement | (full) match/case |
Default Case | else -> |
case _ => |
Loop a Range | i in 1..10 step 2 (closed) i in 1 until 10 step 2 (half-closed) | i <- 1 to 10 by 2 (closed) i in 1 until 10 by 2 (half-closed) |
Read File into Strings | File(fileName).useLines { it.toList() } | scala.io.Source.fromFile("file.txt").mkString |
For Comprehension (for/yield) | No Equivalent | Supported |
Companion Object |
companion object keyword inside class |
object keyword besides class |
New Immutable Sequence | listOf("one", "two", "one") | Seq("one", "two", "one") |
New Immutable Set | setOf("one", "two", "three") | Set("one", "two", "one") |
New Immutable Map | mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 1) | Map("key1" -> 1, "key2" -> 2, "key3" -> 3, "key4" to 1) |
Top Level Functions (Package Level) | Supported | Will be supported in Scala 3 |
Extension Functions | fun Any?.toString(): String { if (this == null) {return "null"} return toString()} | extension (c: Circle) def circumference: Double = c.radius * math.Pi * 2 |
Operator Overloading | with operator infix keyword |
operators are just normal functions |
Regex String | "[0-9]".toRegex() | "[0-9]".r |
Tuple 2 | Pair(a, b) | (a, b) |
Tuple 3 | Triple(a, b, c) | (a, b, c) |
Destructuring Assignment | Objects with componentN() (data classes and collections) |
Objects with unapply() (extractors like case classes) |
Tail Recursive Function |
tailrec keyword |
@tailrec annotation |
Multiple Inheritance Resolution | Must override function in question manually | Later trait wins |
Class Inheritance | only with open or abstract keyword |
allowed |
The sealed keyword |
sealed class is something like enum | sealed types are confined in its source file |
Secondary/Auxiliary Constructors |
constructor keyword |
this() functions |
Reference Equality (the Java == ) |
=== |
eq |
Map Entry Literal | k to v |
k -> v |
Speedy emails, satisfied customers
Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)