Domanda

Sono nuovo a Scala ... Ecco il codice:

  def ack2(m: BigInt, n: BigInt): BigInt = {
      val z = BigInt(0)
      (m,n) match {
          case (z,_) => n+1
          case (_,z) => ack2(m-1,1) // Compiler says unreachable code on the paren of ack2(
          case _ => ack2(m-1, ack2(m, n-1)) // Compiler says unreachable code on the paren of ack2(
      }
  }

Sto cercando di capire che ... perché è dando che l'errore?

Nota: sto usando Scala Eclipse Plugin 2.8.0.r21376-b20100408034031 ch.epfl.lamp.sdt.feature.group

È stato utile?

Soluzione

Il Z all'interno del pattern match non si riferisce alla z avete dichiarato di fuori, introduce una nuova variabile vincolante. Quindi il primo caso corrisponderà ogni possibile coppia (vincolante z al primo elemento della coppia e scartando il secondo) e non saranno mai raggiunto gli altri casi.

Se si sostituisce z nel modello con

`z`

si farà riferimento alla z esistente e non introdurre un nuovo vincolante, in modo da funzionare come si intende. È anche possibile rinominare z alla Z, se non ti piace la sintassi con apici inversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top