Что такое функция 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