class FooMaker {
def apply() = new Foo
}
val new Foo = FooMaker() // вызов apply-метода
//--------------------------------
class Bar {
def apply() = 0
}
val bar = new Bar
bar() // = 0
Как видно apply-метод вызывается как на классе так и интстанциях этого класса.
В scala есть понятие Object, он позволяет иметь только одну инстанцию этого класса, мы определяем получается сразу обьект, а не класс. Чаще всего это используется для фабрик. Вот пример широкораспространенной конструкци в scala :
class Bar(foo: String)
object Bar {
def apply(foo: String) = new Bar(foo)
}
val bar = Bar()
Но еще обьекты используются не только для этого, определив обьек в CLI мы увидем вывод:
object ColorHolder {...}
defined module ColorHoler
Слово module - означает, что за задумкой архитекторов языка, обьект является частью модульной системы scala.
Ведь наш файл с методом мейн всегда содержит обьект в котором и написан запускающий код нашего приложения.
Комментариев нет:
Отправить комментарий