You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| <spanclass="label success">Good</span> `def f(x: Int) = { x*x }`<br> <spanclass="label important">Bad</span> `def f(x: Int) { x*x }`| définition d'une fonction <br> erreur cachée : sans le = c'est une procédure qui retourne un Unit ; occasionnant des problèmes incontrôlés. |
20
20
| <spanclass="label success">Good</span> `def f(x: Any) = println(x)`<br> <spanclass="label important">Bad</span> `def f(x) = println(x)`| définition d'une fonction <br> erreur de syntaxe : chaque argument à besoin d'être typés. |
21
21
|`type R = Double`| alias de type |
@@ -34,13 +34,13 @@ language: fr
34
34
|`def mapmake[T](g:T=>T)(seq: List[T]) = seq.map(g)`| type générique. |
35
35
|`5.+(3); 5 + 3` <br> `(1 to 5) map (_*2)`| sucre syntaxique pour opérateurs infixés. |
|`for (x <- xs; y <- ys) {`<br> `println("%d/%d = %.1f".format(x,y, x*y))`<br>`}`| pour la compréhension : à la manière impérative <br>[sprintf-style](http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#syntax)|
62
62
|`for (i <- 1 to 5) {`<br> `println(i)`<br>`}`| pour la compréhension : itère jusqu'à la borne supérieure comprise. |
63
63
|`for (i <- 1 until 5) {`<br> `println(i)`<br>`}`| pour la compréhension : itère jusqu'à la borne supérieure non comprise. |
| <spanclass="label success">Good</span> `(xs zip ys) map { case (x,y) => x*y }`<br> <spanclass="label important">Bad</span> `(xs zip ys) map( (x,y) => x*y )`| cas d’utilisation d’une fonction utilisée avec un "pattern matching". |
66
66
| <spanclass="label important">Bad</span><br>`val v42 = 42`<br>`Some(3) match {`<br>` case Some(v42) => println("42")`<br>` case _ => println("Not 42")`<br>`}`| "v42" est interprété comme un nom ayant n’importe quelle valeur de type Int, donc "42" est affiché. |
67
67
| <spanclass="label success">Good</span><br>`val v42 = 42`<br>`Some(3) match {`<br>`` case Some(`v42`) => println("42")``<br>`case _ => println("Not 42")`<br>`}`| "\`v42\`" x les "backticks" est interprété avec la valeur de val `v42`, et "Not 42" est affiché. |
68
68
| <spanclass="label success">Good</span><br>`val UppercaseVal = 42`<br>`Some(3) match {`<br>` case Some(UppercaseVal) => println("42")`<br>` case _ => println("Not 42")`<br>`}`|`UppercaseVal`i est traité avec la valeur contenue dans val, plutôt qu’un nouvelle variable du "pattern", parce que cela commence par une lettre en capitale. Ainsi, la valeur contenue dans `UppercaseVal` est comparée avec `3`, et "Not 42" est affiché. |
|`class C(x: R)`_est équivalent à_ <br>`class C(private val x: R)`<br>`var c = new C(4)`| paramètres du constructeur - privé |
71
71
|`class C(val x: R)`<br>`var c = new C(4)`<br>`c.x`| paramètres du constructeur - public |
72
72
|`class C(var x: R) {`<br>`assert(x > 0, "positive please")`<br>`var y = x`<br>`val readonly = 5`<br>`private var secret = 1`<br>`def this = this(42)`<br>`}`|<br>le constructeur est dans le corps de la classe<br>déclare un membre public<br>are un accesseur<br>déclare un membre privé<br>constructeur alternatif |
| <spanclass="label success">Bom</span> `(xs zip ys) map { case (x,y) => x*y }`<br> <spanclass="label important">Ruim</span> `(xs zip ys) map( (x,y) => x*y )`| use 'case' nos argumentos de funções para fazer a associação via 'pattern matching'. |
66
66
| <spanclass="label important">Ruim</span><br>`val v42 = 42`<br>`Some(3) match {`<br>` case Some(v42) => println("42")`<br>` case _ => println("Not 42")`<br>`}`| "v42" é interpretado como um nome que será comparado com qualquer valor Int, e "42" é impresso. |
67
67
| <spanclass="label success">Bom</span><br>`val v42 = 42`<br>`Some(3) match {`<br>`` case Some(`v42`) => println("42")``<br>`case _ => println("Not 42")`<br>`}`| "\`v42\`" entre crases é interpretado como existindo o valor `v42`, e "Not 42" é impresso. |
68
68
| <spanclass="label success">Bom</span><br>`val UppercaseVal = 42`<br>`Some(3) match {`<br>` case Some(UppercaseVal) => println("42")`<br>` case _ => println("Not 42")`<br>`}`|`UppercaseVal` é tratado como um valor existente, mais do que uma nova variável de padrão, porque ele inicia com uma letra maiúscula. Assim, o valor contido em `UppercaseVal` é checado contra `3`, e "Not 42" é impresso. |
69
-
| <h2id="object_orientation">orientação a objetos</h2> ||
69
+
| <spanid="object_orientation"class="h2">orientação a objetos</span> ||
70
70
|`class C(x: R)`_o mesmo que_ <br>`class C(private val x: R)`<br>`var c = new C(4)`| parâmetros do construtor - privado |
71
71
|`class C(val x: R)`<br>`var c = new C(4)`<br>`c.x`| parâmetros do construtor - público |
72
72
|`class C(var x: R) {`<br>`assert(x > 0, "positive please")`<br>`var y = x`<br>`val readonly = 5`<br>`private var secret = 1`<br>`def this = this(42)`<br>`}`|<br>o construtor é o corpo da classe<br>declara um membro público<br>declara um membro que pode ser obtido mas não alterado<br>declara um membro privado<br>construtor alternativo|
0 commit comments