Руководство по Scala. Закрытия.

В данной статье мы рассмотрим закрытия (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.
В следующей статье мы рассмотрим строки в данном языке программирования.