Создание тега типа вручную

У меня есть некоторый код Scala с тегами типов, который мне нужно сделать доступным для пользователей Java. Моя проблема сводится к решению следующего:

Учитывая два тега типа Scala, как я могу вручную создать тег типа для Tuple2[ A , B ]?

Если это имеет какое-то значение, мой конкретный случай немного проще: у меня есть один тег типа для A, и мне нужно создать тег типа для Tuple2 [String, A]


person harel    schedule 27.12.2017    source источник


Ответы (1)


Теги типов обычно используются как имплициты, поэтому имплицитная система хорошо с ними знакома. Просто скажите Scala, какой тип вам нужен, и запросите его неявно.

def tupleTag[A : TypeTag, B: TypeTag]: TypeTag[Tuple2[A, B]] = implicitly

Если его можно создать, Scala сделает это. Если не может, то это ошибка компилятора. В этом случае, поскольку A и B уже являются конкретными (в том смысле, что у них есть теги), Tuple2[A, B] также всегда будет конкретным.

person Silvio Mayolo    schedule 27.12.2017