저는 case 클래스 State를 가지며이 클래스에서 Variable 클래스를 확장하려고합니다. 하지만 Variable 클래스에서는 생성자에서 값만 필요합니다. run
은 어디에 넣을 수 있습니까?유형이 매개 변수를 사용하지 않습니다. Scala
case class State[S, +A](run: S => (A, S)) {
//.....has `map` function
def map[B, X >: State[S, B]](f: A => B): X =
State(state => {
val (a, s2) = run(state)
(f(a), s2)
})
}
class Variable[+A](value: A) extends State[A, A] { // ERROR
def get: Variable[A] =
map(x => x)
def set(newValue: A): Variable[A] =
map(_ => newValue)
}
UPDATE는 나는 이런 식으로 변경했습니다
class Variable[+A](value: A, run: A => (A, A)) extends State[A, A](run) {
def get: Variable[A] =
map(x => x) // ERROR HERE
def set(newValue: A): State[A, A] =
map(_ => newValue)
}
object Variable {
def create[A](value: A): Variable[A] = new Variable[A](value, x => (x, x))
}
하지만 오류가 입수했습니다
형식이 일치; com.libs.State [A, A] required : com.libs.Variable [A] Variable.scala/scala/src/com/libs line 4 스칼라 문제