Scala - Можно ли использовать извлечение совпадений для идентификаторов обратного кода? - PullRequest
0 голосов
/ 14 сентября 2018

Вопрос немного сложно сформулировать, поэтому я попытаюсь привести пример:

def myThing(): (String, String, String) = ("", "", "")

// Illegal, this is a Match
val (`r-1`, `r-2`, `r-3`) = myThing()

// Legal
val `r-1` = myThing()._1

Первая оценка недопустима, поскольку технически это выражение совпадения, и в идентификаторе с пометкой обратного совпадения предполагается, что это ссылки на существующий val в области видимости.

За пределами матча я мог свободно определить «r-1».

Есть ли способ извлечения совпадений с использованием сложных имен переменных?

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете записать полные имена переменных в явном виде:

def myThing(): (String, String, String) = ("a", "b", "c")

// legal, syntactic backtick-sugar replaced by explicit variable names
val (r$minus1, r$minus2, r$minus3) = myThing()

println(`r-1`, `r-2`, `r-3`)

Но поскольку имена переменных можно выбирать свободно (в отличие от метода в Java API, которые называются yield и т. Д.), Я бы предложилпридумывать более простые имена переменных, вещи r$minusx действительно не выглядят красиво.

...