2016-09-03 10 views
0

다음 스칼라 코드가 있습니다. IntelliJ는 "기호 n을 해결할 수 없습니다"라고 말합니다. "File | Invalidate"트릭을 시도했지만 문제가 해결되지 않았습니다.IntelliJ 기호를 해결할 수 없습니다. n

abstract class Nat { 
    def isZero: Boolean 

    def predecessor: Nat 

    def successor: Nat = new Succ(this) 

    def +(that: Nat): Nat 

    def -(that: Nat): Nat 
    } 

    object Succ (n: Nat) extends Nat { 
    def isZero: Boolean = false 
    def predecessor: Nat = n 
    def +(that: Nat) = new Succ(n + that) 
    def -(that: Nat): Nat = if (that.isZero) this else n - that.predecessor 
    } 

답변

1

object Succ에 대한 매개 변수를 사용할 수 없습니다. 대신 class을 사용하십시오.

특성에 대한
class Succ (n: Nat) extends Nat { 
    def isZero: Boolean = false 
    def predecessor: Nat = n 
    def +(that: Nat) = new Succ(n + that) 
    def -(that: Nat): Nat = if (that.isZero) this else n - that.predecessor 
} 
+1

아. 나는 그것을 명심 할 것이다. – johnsam

+0

@ johnsam 행운을 빕니다.) –

1

스칼라의 개체는 매개 변수를 사용할 수 없습니다. 유효한 스칼라 코드가 아닙니다. 이것은 형질에도 적용됩니다. 생성자 매개 변수를 전달해야한다면 클래스를 사용하십시오.

+0

이 곧 변경 될 것이다 ([SIP] (http://docs.scala-lang.org/sips/pending/trait-parameters.html)와 [도티의 PR] (HTTPS : //github.com/lampepfl/dotty/pull/639)). – Alec

관련 문제