현재 나는 1 년 전에 끝난 Martin Odersky, Erik Meijer, Roland Kuhn의 온라인 과정 "Reactive Programming Principles of Reactive Programming" 을 연구 중입니다. 아무도 활동하지 않는다고 생각합니다. 이 과정의 토론 포럼에서 도움을 청하기 위해 여기에 제 질문을 올려 놓았습니다. 정말 고마워요. 세션에서 온라인 scala 과정에서 생성자의 flatMap
는 "기능 임의의 발전기가"마틴 flatMap 방법과 발전기의 구현을 제공합니다, 그것은 같은 것입니다 :trait Generator[+T] {
self => // an alias for "this"
def generate: T
def map[S](f: T => S): Generator[S] = new Generator[S] {
def generate = f(self.generate)
}
def flatMap[S](f: T => Generator[S]): Generator[S] = new Generator[S] {
def generate = f(self.generate).generate
}
}
내가 여기 flatMap에 대한 아주 명확하지 않다, 그것은 새로운 생성기 [S 반환 ]에 정의 된 generate 메소드를 사용하지만 그 구현은 입력 함수 인수 f에서 "other"Generator [S]의 "other"generate 메소드에 의존합니다.
여기서 제 질문은 다음과 같은 유형
1) 입력 함수 f에 의해 발전기 [S] flatMap이 방법에 의해 리턴 된 발전기 [S]입니까입니까?
2) 동일하면 컴파일러가 자체적으로 정의하므로 생성 방법을 어떻게 해석합니까?