Scala:使用带有隐式预期字符串上下文的字符串参数
Scala: using a string argument with an implicit expecting string context
我已经实施了这个解决方案:
(第二个带有隐式 class)
我正在尝试将 "ci" 与字符串参数一起使用,而不是文字字符串
implicit class CaseInsensitiveRegex(sc: StringContext) {
def ci = ("(?i)" + sc.parts.mkString).r
}
def Refiner(uid: String) = new ActionRefiner[Input, Output] {
override protected def refine[A](request: Input[A]): Future[Either[Result, Output[A]]] = {
uid match {
case ci"${request.auid}" => Future.successful(Right(new Output[A](request.auid, request)))
}
}
}
但它似乎不起作用,因为字符串上下文 "sc" 为空。
它应该包含 "request.auid"
的内容
它适用于文字字符串(发送 "abcabc" 之类的内容)。
想法?
一个普通的提取器看起来像一个应用程序 case X(x)
但它不是获取值,而是绑定名称 x
。当你的插值被脱糖时也是如此。
参见the scala hacking blog and how to exploit Dynamic for parameterized extractors。
我已经实施了这个解决方案: (第二个带有隐式 class) 我正在尝试将 "ci" 与字符串参数一起使用,而不是文字字符串
implicit class CaseInsensitiveRegex(sc: StringContext) {
def ci = ("(?i)" + sc.parts.mkString).r
}
def Refiner(uid: String) = new ActionRefiner[Input, Output] {
override protected def refine[A](request: Input[A]): Future[Either[Result, Output[A]]] = {
uid match {
case ci"${request.auid}" => Future.successful(Right(new Output[A](request.auid, request)))
}
}
}
但它似乎不起作用,因为字符串上下文 "sc" 为空。 它应该包含 "request.auid"
的内容它适用于文字字符串(发送 "abcabc" 之类的内容)。
想法?
一个普通的提取器看起来像一个应用程序 case X(x)
但它不是获取值,而是绑定名称 x
。当你的插值被脱糖时也是如此。
参见the scala hacking blog and how to exploit Dynamic for parameterized extractors。