Syntaxe Scala

Variables


// Variables

var x = 12 // variable avec inférence de type

val y = 5 // constante avec inférence de type

var z: Double = 12 // précisions du type

Import


// Import

// _ équivalent à * en Java
import scala.collection._

// Import d'une classe
import scala.collection.Vector 

// Import sélectif
import scala.collection.{Vector, Sequence}

// Import renommé
import scala.collection.{Vector => Vec28}    renaming import.

Structure de données


// Structure de données

// Création d'une liste de 3 éléments
val xs = List(1,2,3)
xs(2) // accès via un index

// Génériques
List[String] // équivalent Java List<String>

// Rangée
1 to 5
1 until 6 
1 to 10 by 2

Structure de contrôle


// Structure de contrôle

// if
if (check) happy else sad

// for
for (x <- xs) {
  ...
}

for (i <- 1 to 5) {
  println(i)
}

Classes


// Classes

// Créer une classe - paramètres privés
class C(x: R)
class C(private val x: R)

// Créer un objet
var c = new C(4)

// Classe abstraite
abstract class D { ... }

// Héritage
class C extends D { ... }

Singleton


// Singleton

object Foo {
  var y = 5

  // permet d'exposer le singleton comme une fonction
  def apply (x: Int) = x + y 
}

// exécution de la méthode apply() 
Foo (1) 

List(1,2,3) // équivalent à List.apply(1,2,3)

Fonctions


// Fonctions

// Utilisation du mot clé def
// la dernière instruction vaut le retour de la fonction

def f(x: Int) = { 
  x*x 
} 

// Une fonction Scala (syntaxe proche des expressions lambda Java 8)
(x:Int) => x + 1
val f = (x:Int) => x + 1

Caractère _


// Caractère _

(1 to 5).map(_*2)

// équivalent à

(1 to 5).map( x => x*2)

Currying


// Currying

object CurryTest extends App {
  def filter(xs: List[Int], p: Int => Boolean): List[Int] = ...

  def modN(n: Int)(x: Int) = ((x % n) == 0)

  // modN(2) = (x: Int) => ((x % 2) == 0)

  val nums = List(1, 2, 3, 4, 5, 6, 7, 8)

  println(filter(nums, modN(2))) // List(2,4,6,8)

  println(filter(nums, modN(3))) // List(3,6)
}

results matching ""

    No results matching ""