이것은 this question과 관련되어 있지만 실재 형식을 사용하면 어떻게 도움이되는지 알 수 없습니다. 개체의 스칼라 유형 매개 변수
나는 다음과 같은 달성하기 위해 노력하고있어 :type MonadicArithmeticFunc[S] = (Int, S) => (Int, S)
object addOne[S] extends MonadicArithmeticFunc[S] {
def apply(n: Int, s: S): (Int, S) = (n + 1, s)
}
val state = Seq.empty[Int]
println(addOne(4, state))
을 하나의 객체에 유형 매개 변수를 추가 할 수 없습니다 그러나이 작동하지 않습니다. 적용 방법은 Function2
의 형식 매개 변수를 어떤 아니므로,
object addOne extends MonadicArithmeticFunc[_] {
def apply[S](n: Int, s: S): (Int, S) = (n + 1, s)
}
그러나 물론 중 하나가 작동하지 않는 : 나는 또한 실존 유형을 사용했습니다. 나도 같은 범위 지정을 얻을 수있는 패키지 객체에 그 선언해야 할 것 제외
def addOne[S](n: Int, s: S): (Int, S) = (n + 1, s)
:
나는 기본 데프을 사용할 수 있습니다. 다른 아이디어?
ArithmeticFunc는 어떤 의미에서든 모나드가 아니며 수퍼 클래스로 사용할 이유가 없으므로 단순히 Object addOne {def apply [S] (n : Int, s : S) : (Int, S) = (n + 1, s)}'. 당신이하려는 일에 대해 정교하게 설명 할 수 있겠습니까? 두 가지 유형 패턴이 당신의 삶을 편하게 만들거나 스카치가되는 것처럼 보입니다. 상태 모나드 – 4lex1v
그냥 궁금 해서요. 왜 패키지 오브젝트에 뭔가 넣는 것을 피하겠습니까? –
문제는'addOne'을 함수 객체로 사용할 수 있기를 원하고,'S '의 타입이 다른 다양한 경우에 사용하고 싶다는 것입니다. 'addOne'은 S가 무엇인지 신경 쓰지 않기 때문에 괜찮을 것입니다. 그냥 통과하는 것입니다. 하지만 지금은 JVM에서 그렇게 될 수 없다는 것을 알고 있습니다. –