Экстракторы могут быть настроены с параметрами в теле оператора выбора (или где-нибудь еще что экстрактор использовался бы)?

В основном я хотел бы иметь возможность создать пользовательский экстрактор, не имея необходимость хранить его в переменной до использования его.

Это не реальный пример того, как я использовал бы его, он будет более вероятно использоваться в случае регулярного выражения или некоторого другого строкового шаблона как конструкция, но надо надеяться он объясняет, что я ищу:

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

14
задан Dan Shryock 9 March 2010 в 18:37
поделиться

2 ответа

Нет.

8.1.7 Паттерны экстракторов

Паттерн экстрактора x (стр. 1 , . . , . . p n ), где n ≥ 0 равно синтаксическая форма как конструктор рисунок. Однако вместо дела класс, стабильный идентификатор x обозначает Объект, который имеет метод-член named unapply или unapplySeq, который соответствует шаблону.

4
ответ дан 1 December 2019 в 14:11
поделиться

Параметризация экстракторов было бы круто, но у нас нет ресурсов для их реализации прямо сейчас.

8
ответ дан 1 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: