/ / scala-Arbeitsblatt seltsame Funktionsbeschreibung - scala, intellij-14

scala Arbeitsblatt seltsame Funktion Beschreibung - scala, intellij-14

Ich habe eine erstellt Scala-Arbeitsblatt im Intellij Idea 14 Community Edition und nun versuche ich einige Scala-Übungen mit einfachen Beispielen.

Wenn ich eine Funktion erstelle, die FunktionDie Beschreibung, die ich in der kompilierten Ausgabe des Arbeitsblatts sehe, zeigt etwas Seltsames, etwas mit meinem Scala-Compiler oder Intellij oder ist eine neue Art, Funktionsdefinition in anzuzeigen Scala 2.10.6 (Hinweis: Ich verwende kein SBT)

Java: 1,8 , OS: Mac OSX

isGoodEnough(guess: Double, x: Double) = math.abs(guess * guess - x) / x < 0.001

def improve(guess: Double, x: Double) = (guess + x / guess) / 2

def sqrtIter (guess : Double, x : Double) : Double =
if(isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)

def sqrt (x : Double) = sqrtIter(1, x)

sqrt(4)

Ausgabe durch Scala-Arbeitsblatt dargestellt

isGoodEnough: isGoodEnough[](val guess: Double,val x: Double) => Boolean

improve: improve[](val guess: Double,val x: Double) => Double

sqrtIter: sqrtIter[](val guess: Double,val x: Double) => Double

sqrt: sqrt[](val x: Double) => Double

res0: Double = 2.000609756097561

Ich kann nicht unberücksichtigt lassen, warum es die Funktionsnamen als isGoodEnough [] anzeigt

Antworten:

1 für die Antwort № 1

In Scala können Sie Generika verwenden, wenn Sie möchtenmachen Sie eine Funktion allgemein. Zum Beispiel wirkt meine Schwanzfunktion unten auf einer Liste, aber ich möchte nicht angeben, was in der Liste enthalten ist, nur die Tatsache, dass es sich um eine Liste von etwas handelt (ich gebe den Platzhalter A)

def tail[A](l: List[A]): List[A] = ...

Wenn Sie dies tun, müssen Sie dies dem Scala-Compiler mitteilen - dies tun Sie mit den Klammern vor den Parametern.

Das [] in isGoodEnough [], Verbesserung [] zeigt Ihnen, dass Sie keine Generika verwenden