Вопрос

Об этом говорит название.

Есть ли способ использовать тип e.г.new Object {def foo = "bar"} в вызове isInstanceOf[<structural_type_here>]?

Это было полезно?

Решение

Структурные типы не работают с кодовым кодом.Точно так же сопоставление шаблонов со структурными типами бессмысленно (они всегда совпадают).

Обычно в этом виновато стирание типов, но даже при отсутствии стирания это не сработает, поскольку JVM не понимает структурные типы.

С другой стороны, Scala могла быть достаточно умен, чтобы заставить проверку структурного типа работать через стирание.

Другие советы

Я хотел бы сказать, что вы можете использовать псевдоним типа:

родовое слово

Но это всегда будет верным, благодаря стиранию.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top