내가 Iteratee.scala의 소스 코드를 읽고 있어요에 Iteratee.fold를 이해 할 수 없습니다 https://github.com/playframework/Play20/blob/master/framework/src/iteratees/src/main/scala/play/api/libs/iteratee/Iteratee.scala는 재생 2.0
를 구체적으로 "배"iteratee을 구성하기위한 편리한 메소드. 케이스 각 문에
def fold[E, A](state: A)(f: (A, E) => A): Iteratee[E, A] = {
def step(s: A)(i: Input[E]): Iteratee[E, A] = i match {
case Input.EOF => Done(s, Input.EOF)
case Input.Empty => Cont[E, A](i => step(s)(i))
case Input.El(e) => { val s1 = f(s, e); Cont[E, A](i => step(s1)(i)) }
}
(Cont[E, A](i => step(state)(i)))
}
, 우리는
가 또는
계속 생성자를 완료를 요구하고있다. 그러나 이러한 생성자는 어디에 정의되어 있습니까? 나는 이것들이 특성의 구현 자일 것임을 추측한다. 그러나 나는 "extend Iteratee"에 대해 ctrl + F를 사용하여 그들을 찾을 수 없다.
아, 그건 싱글 톤 방법입니다! 그들이 수업으로 위장하려고하는 것을 혼란스럽게 생각합니다. 감사! – Mark
생성자의 호출은'new'로 시작해야합니다. – senia
@Mark : 경고로서 이들은 Java 개념에서 _constructors_는 아니지만 ADT의 의미로 사용됩니다. "Done 생성자"는 여기서 보게되는 것을 정확하게 의미합니다. –