В данной статье мы рассмотрим закрытия (Closures) в языке программирования Scala.
Закрытие – это функция, возвращаемый результат которой зависит от значений одной или нескольких переменных за её пределами.
Данная сущность имеет следующий общий вид записи:
var devider = 2;
val devider = (i:Int) => i / deviderFactor;
В данном случае, наша функция делит передаваемое её значение на deviderFactor.
Для понимания того, как это работает на практике рассмотрим следующий пример:
package net.proselyte.scalatutorial.closures
/**
* Simple Scala class that demonstrates Closure in action.
*
* @author Eugene Suleimanov
*/
object ClosureDemo {
def main(args: Array[String]) {
println("devider(300): " + devider(300));
println("devider(600): " + devider(600));
}
var deviderFactor = 2;
val devider = (i: Int) => i / deviderFactor;
}
В результате выполнения данной программы мы получим следующий результат:
devider(300): 150
devider(600): 300
Process finished with exit code 0
В данном примере у нас есть deviderFactor, который равняется 2 и мы передаём нашей функции 2 числа 300 и 600. Функция возвращает нам результат деления передаваемого значения 300 на 2 и 600 на 2 -> 150 и 300 соответственною
На этом мы заканчиваем изучение закрытий в Scala.
В следующей статье мы рассмотрим строки в данном языке программирования.