다음 서명 메서드 주위에 머리를 감싸려고합니다. LogAccess는 두 개의 매개 변수 목록을 사용하고 반환 유형이 LogEntry 인 함수를 반환하는 함수라고 생각합니다.스칼라 함수 : 반환 형식은 무엇입니까
또는 반환 유형은 느리게 평가되는 RouteResult
입니다.
def logAccess(remoteAddress: RemoteAddress, start: Long)(request: HttpRequest): RouteResult => Option[LogEntry] = {
case RouteResult.Complete(result) =>
val ip = remoteAddress.toOption.map(_.getHostAddress)
val state = sisCache.get
statsWriter.recordAccess(state, request.uri.toString, request.method.name, ip, result.status.intValue, time.ms - start)
Some(LogEntry(s"state: $state, clientIP: $ip, uri: ${request.uri}, method: ${request.method.name}, status: ${result.status}, took: ${time.ms - start}ms", InfoLevel))
case RouteResult.Rejected(rejections) =>
None
}