четверг, 29 августа 2013 г.

Apply-method и Object

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

Комментариев нет:

Отправить комментарий