0
我非常新Scala中遇到的奇怪的代碼片段:它構造函數重載嗎?
class EndpointMapper[A](m: Method, e: Endpoint[A]) extends Endpoint[A] { self =>
/**
* Maps this endpoint to either `A => Output[B]` or `A => Future[Output[B]]`.
*/
final def apply(mapper: Mapper[A]): Endpoint[mapper.Out] = mapper(self)
final def apply(input: Input): Endpoint.Result[A] =
if (input.request.method == m) e(input)
else EndpointResult.Skipped
final override def toString: String = s"${ m.toString.toUpperCase } /${ e.toString }"
}
這是一類,這樣我就可以創建它的一個實例。 apply
怎麼樣?
我可以使用EndpointMapper(mapper)
就像調用apply
方法的函數嗎?
如何區分兩個應用程序或編譯器如何知道應該調用哪個apply
?