sto imparando paradigmi di programmazione nella mia università e la lettura di questo materiale didattico fornito dal docente che ha definito una funzione in questo modo:DEF o val per definire la funzione a Scala
val double = (x: Int) => 2 * x
double: Int => Int = <function1>
Ma dai miei studi ho trovato e mi sono abituato a definire la stessa funzione come questa:
def d (x: Int) = 2 * x
d: (x: Int)Int
Sono nuovo di Scala. Ed entrambe le definizioni di danno a seguito di:
res21: Int = 8
Appena passato 4
come parametro. Ora la mia domanda principale è perché il docente preferirebbe usare val
per definire una funzione? Lo vedo più a lungo e non è davvero necessario a meno che l'uso di val
offra alcuni vantaggi aggiuntivi che non conosco. Inoltre capisco che l'uso di val
faccia diventare un segnaposto un nome così in un secondo momento nel programma, potrei scrivere per errore val double = 5
e la funzione sarebbe sparita! In questa fase sono abbastanza convinto di aver imparato un modo migliore di definire una funzione a meno che qualcuno non mi dicesse diversamente.
Non sono qualificato per dire qualcosa di definitivo su Scala, ma hai provato a fare effettivamente 'val double = 5' dopo che la funzione è stata definita' double'? Ho l'impressione che dovrebbe essere impossibile ridefinire un nome una volta definito. In ogni caso, sia 'val' che' def' producono qui lo stesso risultato. La differenza è semplicemente stilistica. Spesso, è più chiaro definire una funzione con 'def', ma a volte ha senso definirla con' val'. Se non sei sicuro, ti consiglierei di usare 'def', poiché è meno probabile che causi confusione. – kqr
Sì, ho eseguito 'val double = 5', ho digitato' double' e ottenuto 'res24: Int = 5' – Emanuel
possibile duplicato di [Differenza tra metodo e funzione in Scala] (http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala) –