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