Ho creato un Scala in Intellij Idea 14 Community Edition e ora sto provando a fare qualche scala pratica con esempi di base.
Quando creo una funzione, la funzionela descrizione che vedo nell'output compilato del foglio di lavoro mostra qualcosa di strano, c'è qualcosa di sbagliato nel mio compilatore di scala o Intellij o è un nuovo modo di mostrare la definizione della funzione in scala 2.10.6 (Nota: non sto usando 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)
Output mostrato da Scala Worksheet
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
Non riesco a capire perché mostra i nomi delle funzioni come isGoodEnough [], migliora [] nella definizione / descrizione della funzione
risposte:
1 per risposta № 1In Scala puoi usare i generici quando vuoirendere una funzione generale. Ad esempio, la mia funzione di coda sotto agisce su una lista, ma non voglio specificare cosa c'è nella lista, solo il fatto che si tratta di una lista di qualcosa (che darò al segnaposto A)
def tail[A](l: List[A]): List[A] = ...
Quando lo fai, devi dire al compilatore di Scala su di esso - lo fai con le parentesi prima dei parametri.
[] In isGoodEnough [], improve [] ti sta mostrando che non hai alcun generico coinvolto