基本上,我希望能够构建一个自定义提取器,而不必在使用它之前将其存储在变量中。
这不是我如何使用它的真实示例,它更有可能用于正则表达式或其他一些字符串模式(如构造)的情况下,但希望它解释了我正在寻找的内容:
def someExtractorBuilder(arg:Boolean) = new {
def unapply(s:String):Option[String] = if(arg) Some(s) else None
}
//I would like to be able to use something like this
val {someExtractorBuilder(true)}(result) = "test"
"test" match {case {someExtractorBuilder(true)}(result) => result }
//instead I would have to do this:
val customExtractor = someExtractorBuilder(true)
val customExtractor(result) = "test"
"test" match {case customExtractor(result) => result}
只做一个自定义提取器并没有太大区别,但是如果您为案例语句构建大量提取器列表,则通过将所有提取器与其用法分开可能会使事情变得更难阅读。
我希望答案是否定的,你不能这样做,但我想我会先问问周围的人:D