ID를 나타내는 객체가 내 프로젝트에 있습니다.스칼라 값 클래스 다중 상속
ChairId, TableId, LampId라고합시다. 나는 그들 모두가 GenericId로부터 상속 받기를 바랍니다. 전화 할 수 있기를 원합니다. def f(x: GenericId) = x.id
id: String
하나만 보유하고 싶기 때문에 AnyVal을 확장하도록하고 싶습니다. 하지만 경우
sealed abstract class GenericId(val id: String)
final case class ChairId(override val id: String) extends GenericId(id)
final case class TableId(override val id: String) extends GenericId(id
그리고 I :이 입력 한 ChairId.generate()
또한 내 특정 ID의 예를 생성 할 기능 generate
내가 좋아하는 뭔가를 입력하고 싶습니다 제공하기 위해 각 유형 싶습니다 GenericId는 AnyVal에서 상속 받았지만 지금까지 아무런 행운이 없었습니다./또한 GenericId를 특성으로 만들고 케이스 클래스가 GenericId로 AnyVal을 확장했지만 컴파일하지도 않았습니다./
Anot 그녀의 일을 TableId.generate()
함께 제공 할 수 있습니다. 그냥 기능을 generate
및 그 기본적으로 내 문제를 해결할 수 있지만 동반자 개체를 정의하지 않고 해결할 가능성이 있는지 궁금해? (즉, implicits을 통해 어떻게 든) 컴파일되지 않는 코드를 제공하기 위해 주석에 대한
// 편집
(나는 싶습니다) :
sealed abstract class AbstractId(val id: String) extends AnyVal
final case class CatId(override val id: String) extends AbstractId(id)
final case class DogId(override val id: String) extends AbstractId(id)
나는 당신이 여기서 무엇을 묻고 있는지 완전히 모르겠습니다. 질문이 여러 개인 경우 스택 오버플로 관련 질문을 여러 개로 나눌 수 있습니다. –
시도한 것에 대한 코드 및 컴파일 오류를 포함하십시오. 나는 이것이 도움이 될 것이라고 생각한다. –