[См. Фрагмент ниже] Я читал, что у меня есть X, который является Piece, и у меня есть Player, для которого требуется Piece. Игрок Me пытается определить эту пьесу с пьесой X. Тем не менее Scala не признает X как часть, а скорее видит «X.type». Что означает X.type? Я не совсем уверен, что моя проблема, поэтому мне трудно найти время.Scala не разрешает X как Y, хотя X расширяет Y
Я не вижу, как это может быть тип затенения [см. Scala really weird Type Mismatch], так как я не указываю другую «Пьесу», вместо этого я указываю только, что мне требуется «Пьеса».
Кажется, что есть что-то, что препятствует Скале разрешать Х как Кусок.
Чтобы попробовать в РЕПЛ
trait Piece { val piece: Char }
case class X extends Piece { val piece: Char = 'X' }
trait Player { val piece: Piece }
case class Me extends Player { val piece: Piece = X }
Результат
error: type mismatch;
found : X.type
required: Piece
case class Max extends Player { val piece: Piece = X }
Ах, большое спасибо! У меня обычно есть параметр, поэтому я никогда не сталкивался с этой проблемой. Проблема с X() решает проблему. Не понимал класс IS типа. Теперь совпадение шаблонов шаблонов становится еще более ощутимым, и тот факт, что классы являются чертежами экземпляра, еще более ясен, потрясающий. Он просто щелкнул! – Miles
Этот ответ на самом деле не совсем корректен. Не могли бы вы обновить его для согласования с моим ответом? Как раз в интересах, вы знаете, полезность. –