Scala объектно-ориентирована
Scala — мощный язык программирования, сочетающий в себе лучшие возможности объектно-ориентированного программирования (ООП) и функционального программирования (ФП). В этой статье блога мы рассмотрим объектно-ориентированные аспекты Scala и продемонстрируем различные методы на примерах кода.
- Определение и вызов метода.
В Scala методы определяются с помощью ключевого слова «def», за которым следуют имя метода, параметры, тип возвращаемого значения и тело. Вот пример:
def greet(name: String): Unit = {
println(s"Hello, $name!")
}
// Method invocation
greet("John") // Output: Hello, John!
- Перегрузка методов:
Scala поддерживает перегрузку методов, что позволяет определять несколько методов с одинаковым именем, но разными списками параметров. Вот пример:
def add(a: Int, b: Int): Int = {
a + b
}
def add(a: Double, b: Double): Double = {
a + b
}
// Method invocation
val result1 = add(2, 3) // Output: 5
val result2 = add(2.5, 3.5) // Output: 6.0
- Значения параметров по умолчанию:
Scala позволяет определять методы со значениями параметров по умолчанию. Это означает, что вы можете опустить определенные параметры при вызове метода, и они примут значения по умолчанию. Вот пример:
def greet(name: String, message: String = "Hello"): Unit = {
println(s"$message, $name!")
}
// Method invocation
greet("John") // Output: Hello, John!
greet("Jane", "Hi") // Output: Hi, Jane!
- Метод с переменными аргументами:
Scala поддерживает переменные аргументы, обозначаемые синтаксисом «varargs». Это позволяет передавать в метод переменное количество аргументов. Вот пример:
def sum(numbers: Int*): Int = {
numbers.sum
}
// Method invocation
val result = sum(1, 2, 3, 4, 5) // Output: 15
- Цепочка методов:
В Scala вы можете объединять методы, вызывая один метод за другим для одного и того же объекта. Это достигается путем возврата самого объекта из каждого метода. Вот пример:
class Calculator {
private var value = 0
def add(number: Int): Calculator = {
value += number
this
}
def multiply(number: Int): Calculator = {
value *= number
this
}
def getResult: Int = value
}
// Method chaining
val calculator = new Calculator
val result = calculator.add(5).multiply(2).getResult // Output: 10