可以使用case语句的主体(或者使用提取器的任何其他地方)中的参数来定制提取器吗?
基本上,我希望能够构建自定义提取器,而无需在使用它之前将其存储在变量中。
这不是我将如何使用它的真实示例,它更可能用于正则表达式或其他字符串模式(如构造),但希望它能解释我正在寻找的内容:
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}
当只做一个自定义提取器时,它没有太大区别,但是如果你为case语句构建一个大的提取器列表,那么通过将所有提取器与它们的用法分开,可能会使事情变得更难。
我希望答案是不,你不能这样做,但我想我先问一下:D
没有找到相关结果
已邀请:
4 个回复
吐兄
担每棱绰
黎喊病
:
https://github.com/cchantep/acolyte/blob/master/scalac-plugin/readme.md
校勒魏寡
不幸的是,当你想在一个
中使用不同的变体时,不能使用它,因为所有
语句都在同一范围内。不过,它有时也很有用。