В принципе, я хотел бы иметь возможность создавать пользовательский экстрактор без необходимости хранить его в переменной перед его использованием.
Это не настоящий пример того, как я буду использовать его, скорее всего, он будет использоваться в случае регулярного выражения или какой-либо другой строковой структуры, такой как конструкция, но, надеюсь, он объясняет, что я ищу:
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