【问题标题】:Scala function : What is the return typeScala函数:返回类型是什么
【发布时间】:2016-12-29 19:06:03
【问题描述】:

我正试图围绕以下方法签名。我相信 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
 }

【问题讨论】:

    标签: scala function lambda


    【解决方案1】:

    logAccess是一个接受两个参数列表并返回一个(RouteResult => Option[LogEntry])的函数,即接受一个RouteResult并返回一个Option[LogEntry]的函数。

    语法“{ case whatever => ... }定义了一个偏函数,它是PartialFunction的一个实例,它是Function的子类as you can see in the documentation。由于这个偏函数接受一个RouteResult并返回一个Option[ LogEntry],是一个(RouteResult => Option[LogEntry]),可以从logAccess返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-05
      • 2014-04-09
      • 2011-04-13
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多