Domanda

Invece di scrivere

((x: Double) => (((y: Double) => y*y))(x+x))(3)

Vorrei scrivere qualcosa del genere

((x: Double) => let y=x+x in y*y)(3)

C'è qualcosa di simile a questo tipo di zucchero sintattico in Scala?

È stato utile?

Soluzione

In effetti c'è: si chiama " val " ;. : -)

({ x: Double =>
  val y = x + x
  y * y
})(3)

Le parentesi graffe sono ovviamente opzionali qui, le preferisco solo tra parentesi quando definisco le funzioni (dopo tutto, questo non è Lisp). La parola chiave val definisce una nuova associazione all'interno dell'ambito lessicale corrente. Scala non obbliga i locali a definire il proprio ambito, a differenza di linguaggi come Lisp e ML.

In realtà, var funziona anche in qualsiasi ambito, ma è considerato un cattivo stile usarlo.

Altri suggerimenti

OK, ecco la copertina CON la rilegatura:

 ({ x:Double => val y = x + x; y * y })(3)

Saluti

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