Scala Tutorial
Basics
Control Statements
OOP Concepts
Parameterized - Type
Exceptions
Scala Annotation
Methods
String
Scala Packages
Scala Trait
Collections
Scala Options
Miscellaneous Topics
In Scala, operators are not special language constructs, but rather they are method calls. Essentially, every operator in Scala corresponds to a method. Here's a closer look at Scala's approach to operators:
In Scala, methods with one parameter can be called using infix notation. For example:
val sum = 1 + 2
This is syntactic sugar for:
val sum = 1.+(2)
Here, +
is a method of the Int
class.
The usual arithmetic operators are available:
+
- addition-
- subtraction*
- multiplication/
- division%
- moduloThese operators compare two values:
==
- equal to!=
- not equal to>
- greater than<
- less than>=
- greater than or equal to<=
- less than or equal toUsed for boolean operations:
&&
- logical AND||
- logical OR!
- logical NOT=
- assign+=
- increment and assign-=
- decrement and assign*=
- multiply and assign/=
- divide and assign%=
- modulo and assignPrefix and postfix unary operators:
+
- unary plus-
- unary minus!
- logical NOT~
- bitwise NOTFor custom classes, you can define methods like unary_!
to support custom unary operators.
Scala allows defining custom operators. Any method can act as an operator. For example, in collections:
::
- list cons++
- concatenation&
- bitwise AND|
- bitwise OR^
- bitwise XOR<<
- left shift>>
- right shift>>>
- unsigned right shiftFor reference equality:
eq
- checks if two references are the samene
- checks if two references are differentRemember, Scala's approach to operators empowers developers to create DSLs (Domain Specific Languages) and expressive APIs. However, it's essential to balance expressiveness with clarity and readability.
List of operators in Scala:
val sum: Int = 5 + 3
Arithmetic operators in Scala:
val addition: Int = 5 + 3 val subtraction: Int = 5 - 3 val multiplication: Int = 5 * 3 val division: Double = 5.0 / 3
Comparison operators in Scala:
val isEqual: Boolean = 5 == 3 val isNotEqual: Boolean = 5 != 3 val isGreater: Boolean = 5 > 3
Logical operators in Scala:
val andResult: Boolean = true && false val orResult: Boolean = true || false val notResult: Boolean = !true
Bitwise operators in Scala:
val bitwiseAnd: Int = 5 & 3 val bitwiseOr: Int = 5 | 3 val bitwiseXor: Int = 5 ^ 3
Unary operators in Scala:
val negativeValue: Int = -5 val positiveValue: Int = +5 val notValue: Boolean = !true
Operator overloading in Scala:
class Complex(val real: Double, val imaginary: Double) { def +(other: Complex): Complex = new Complex(real + other.real, imaginary + other.imaginary) } val complex1 = new Complex(1.0, 2.0) val complex2 = new Complex(3.0, 4.0) val result = complex1 + complex2
Custom operators in Scala:
class Circle(val radius: Double) { def *(factor: Double): Circle = new Circle(radius * factor) } val circle = new Circle(5.0) val scaledCircle = circle * 2.0
Precedence and associativity of operators in Scala:
val result = 2 + 3 * 4 // Precedence: * has higher precedence than +