2012-04-03 15 views
0

HALLO Ich bin neu bei Scala diesen Code ausführen Versuch:Wie passt dieser Fehlertyp?

class Number(x : Int){ 
     var number = x 

     def inc(): Int = { 
      number => number + 1 
     } 
    } 

Aber ich erhalte den folgenden Fehler: solution.scala: 12: Fehler: fehlende Parametertyp Nummer => Nummer + 1 Ich weiß nicht, wie man das beheben kann.

+0

Beachten Sie, dass ein Zwischen 'X' überspringen kann: 'Klasse Nummer (var Nummer: Int) {...}' – elbowich

Antwort

0

oder einfach:

def inc = (x: Int) => x + 1 

seit Int Rückgabetyp abgeleitet ist, keine Notwendigkeit zu spezifizieren es

Was den Umgang mit der Veränderlichkeit in der Frage betrifft, sind inc (1), inc (5) usw. selbst transformierte Repräsentationen der an die Klasseninstanz übergebenen Zahl (d. H. sie entsprechen "var number", aber unveränderlich. Keine wirkliche Notwendigkeit für Veränderlichkeit auf das, was wir hier sehen ...

2

Grundsätzlich können Sie expicitly sagen, welche Art Sie erwarten sind:

def inc(): Int = { 
      number: Int => number + 1 
} 

ABER dies wird nicht kompiliert, verursachen, was Sie definiert haben, ist Funktion, so:

def inc(): (Int) => Int = { 
    // some function that takes Int, calls it `number` and increment 
    number: Int => number + 1 
} 

wäre näher,
aber
es macht keinen Sinn und beachten Sie, dass die Nummer, die Sie definiert haben nichts gemein mit number Variable in Klasse - deshalb Scala-Compiler nicht Typen für Sie ableiten können.

Ich glaube, Sie wollten etwas wie schreiben:

def inc(): Int = {number += 1; number;} 
    // will take effect on number field 

oder

def inc(num: Int): Int = num + 1 
+1

Ich denke, es sollte 'sein def inc() = {Zahl = Zahl + 1; Nummer} ', geht mit einem * veränderlichen * Typ (ick!) wie es scheint der Fall zu sein. –

+0

@pst yeah, du hast Recht;) –

+0

danke Jungs wirklich geholfen :) –