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