Что такое функция apply в Scala?

Я никогда не понимал его от надуманных немаршалинга и verbing существительных ( с AddTwo классе apply что добавляет два!) образцы.

Я понимаю, что это синтаксический сахар, поэтому (я вывел из контекста) он должен был быть разработан, чтобы сделать какой-то код более интуитивным.

что означает класс с

3 ответов


у математиков есть свои маленькие странности, вместо того, чтобы сказать "тогда мы называем функцию f передав ей x в качестве параметра "как сказали бы мы, программисты, они говорят о" применении функции f его аргумент x".

в математике и информатике применяется функция, которая применяется функции для Аргументов.
Википедия

apply служит цели закрытие разрыва между объектно-ориентированной и функциональной парадигмами в Scala. Каждая функция в Scala может быть представлена как объект. Каждая функция также имеет тип OO: например, функция, которая принимает Int параметр и возвращает Int будет иметь тип OO Function1[Int,Int].

 // define a function in scala
 (x:Int) => x + 1

 // assign an object representing the function to a variable
 val f = (x:Int) => x + 1

поскольку все является объектом в Scala f теперь можно рассматривать как ссылку на


это происходит от идеи, что вы часто хотите применить что-то к объекту. Более точным примером является завод. Когда у вас есть фабрика, вы хотите применить


вот небольшой пример для тех, кто хочет знакомиться быстро

 object ApplyExample01 extends App {


  class Greeter1(var message: String) {
    println("A greeter-1 is being instantiated with message " + message)


  }

  class Greeter2 {


    def apply(message: String) = {
      println("A greeter-2 is being instantiated with message " + message)
    }
  }

  val g1: Greeter1 = new Greeter1("hello")
  val g2: Greeter2 = new Greeter2()

  g2("world")


} 

выход

экземпляр greeter-1 создается с сообщением hello

экземпляр greeter-2 создается с помощью message world