2
在玩2.1应用程序,我有以下代码(这只是摆脱任何尾随斜线的请求包装):阶:更简单的方法来包装另一个对象内的对象
class NormalizedRequest(request: RequestHeader) extends RequestHeader {
val headers = request.headers
val id = request.id
val method = request.method
val queryString = request.queryString
val remoteAddress = request.remoteAddress
val tags = request.tags
val version = request.version
// strip first part of path and uri if it matches http.path config
val path = if (request.path == "/") "/" else request.path.stripSuffix("/")
val uri = path + {
if(request.rawQueryString == "") ""
else "?" + request.rawQueryString
}
}
object NormalizedRequest {
def apply(request: RequestHeader) = new NormalizedRequest(request)
}
这种代码是很常见的,你只是包装内的对象的另一个
我在想,如果有到acomplish它更简单的方法,理想情况下是类似的信息(灵感案例类的伪代码):
object NormalizedRequest {
def apply(request: RequestHeader) = {
val path = if (request.path == "/") "/" else request.path.stripSuffix("/")
val uri = path + {
if(request.rawQueryString == "") ""
else "?" + request.rawQueryString
}
request.copy(path = path, uri = uri)
}
}
在这种情况下,我会使用隐式转换为结构类型而不是实际的包装类型。 – mmmbell