기존 프로젝트에서 식별자를 사용하려고하는데 클래스가 잘못되었습니다.scodec.Codec 값이없는 필드가있는 클래스 때문에 [명령]이 누락되었습니다.
이것을 고려하십시오 scodec example. 내가
sealed class TurnLeft(degrees: Int) extends Command {
def getDegrees: Int = degrees
}
implicit val leftCodec: Codec[TurnLeft] = uint8or16.xmap[TurnLeft](v => new TurnLeft(v), _.getDegrees)
에 TurnLeft
과 코덱을 변경하면 내가 degrees
필드 값 필드를 만들면 나는
Error:(x, x) could not find Lazy implicit value of type scodec.Codec[Command]
val codec: Codec[Either[UnrecognizedCommand, Command]] = discriminatorFallback(unrecognizedCodec, Codec[Command])
그것은 모든 일을 얻는다. 나는 그것이 무언가 까다 롭다 고 생각한다. 작동 시키려면 어떻게해야합니까?
문제를 나타내는 예제 프로젝트는 here입니다.
굉장! 고마워, 마일즈. 이것에 대한 측면 질문. 이러한 val의 정의는 주어진 클래스의 메모리 공간을 두 배로 늘립니까? – expert
여기에는 val 하나만 있습니다. 비 - case 클래스의 생성자 인수는 명시 적으로 표시되지 않는 한 val을 생성하지 않습니다. –
알겠습니다. 나는'def getDegrees'가 그것을 반환 할 수 있다면 여전히 어딘가에 저장되어야한다고 생각했습니다. – expert