7. Vérifiezvotreinstallation
$
groovy
-‐-‐version
Groovy
Version:
2.1.3
JVM:
1.7.0_09
Vendor:
Oracle
Corporation
OS:
Mac
OS
X
$
gradle
-‐-‐version
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
Gradle
1.5
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
Gradle
build
time:
mercredi
27
mars
2013
13
h
51
UTC
Groovy:
1.8.6
Ant:
Apache
Ant(TM)
version
1.8.4
compiled
on
May
22
2012
Ivy:
2.2.0
JVM:
1.7.0_09
(Oracle
Corporation
23.5-‐b02)
OS:
Mac
OS
X
10.8.3
x86_64
11. Unepersonne...sauceJava
public
class
Person
{
private
String
name;
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
this.name
=
name;
}
public
String
greet()
{
return
"Hello,
my
name
is
"
+
name;
}
}
12. Unepersonne...sauceJava
public
class
Person
{
private
String
name;
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
this.name
=
name;
}
public
String
greet()
{
return
"Hello,
my
name
is
"
+
name;
}
}
Les points-virgules,
c’est pour les Mickeys !
13. Unepersonne...sauceJava
public
class
Person
{
private
String
name
public
String
getName()
{
return
name
}
public
void
setName(String
name)
{
this.name
=
name
}
public
String
greet()
{
return
"Hello,
my
name
is
"
+
name
}
}
14. Unepersonne...sauceJava
public
class
Person
{
private
String
name
public
String
getName()
{
return
name
}
public
void
setName(String
name)
{
this.name
=
name
}
public
String
greet()
{
return
"Hello,
my
name
is
"
+
name
}
}
En Groovy, la visitbilité
est public par défaut
15. Unepersonne...sauceJava
class
Person
{
private
String
name
String
getName()
{
return
name
}
void
setName(String
name)
{
this.name
=
name
}
String
greet()
{
return
"Hello,
my
name
is
"
+
name
}
}
16. Unepersonne...sauceJava
class
Person
{
private
String
name
String
getName()
{
return
name
}
void
setName(String
name)
{
this.name
=
name
}
String
greet()
{
return
"Hello,
my
name
is
"
+
name
}
}
Le return aussi
est optionnel
17. Unepersonne...sauceJava
class
Person
{
private
String
name
String
getName()
{
name
}
void
setName(String
name)
{
this.name
=
name
}
String
greet()
{
"Hello,
my
name
is
"
+
name
}
}
18. Unepersonne...sauceJava
class
Person
{
private
String
name
String
getName()
{
name
}
void
setName(String
name)
{
this.name
=
name
}
String
greet()
{
"Hello,
my
name
is
"
+
name
}
}
Groovy a la notion
de propriétés
19. Unepersonne...sauceJava
class
Person
{
String
name
String
greet()
{
"Hello,
my
name
is
"
+
name
}
}
20. Unepersonne...sauceJava
class
Person
{
String
name
String
greet()
{
"Hello,
my
name
is
"
+
name
}
}
Un langage sexy
avec des GString
21. Unepersonne...sauceJava
class
Person
{
String
name
String
greet()
{
"Hello,
my
name
is
${name}"
}
}
22. Unepersonne...sauceJava
class
Person
{
String
name
String
greet()
{
"Hello,
my
name
is
${name}"
}
}
Reformattons tout
ce beau bazar
24. Unepersonne...sauceGroovy!
class
Person
{
String
name
String
greet()
{
"Hello,
my
name
is
${name}"
}
}
public
class
Person
{
private
String
name;
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
this.name
=
name;
}
public
String
greet()
{
return
"Hello,
my
name
is
"
+
name;
}
}
41. Closures—ou«clotures»
• Pas besoin d’attendre JDK 8 en 2014
• Groovy a des closures depuis 2003 !
• C’est quoi une closure ?
• bloc de code réutilisable
• assignable dans une variable
• qu’on peut passer en paramètre d’une méthode
• pouvant prendre des arguments
• y compris des valeurs par défaut
49. Vousavezvule«powerassert»deGroovy?
def
(e,
m,
c)
=
[123,
1,
3e9]
assert
e
==
m
*
c
*
2
Assertion
failed:
assert
e
==
m
*
c
*
2
|
|
|
|
|
|
|
|
1
|
|
6E+9
|
false|
3E+9
123
3E+9
Assignation
multiple
50. Vousavezvule«powerassert»deGroovy?
def
(e,
m,
c)
=
[123,
1,
3e9]
assert
e
==
m
*
c
*
2
Assertion
failed:
assert
e
==
m
*
c
*
2
|
|
|
|
|
|
|
|
1
|
|
6E+9
|
false|
3E+9
123
3E+9
Toutes les
valeurs des
sous-
expressions
Assignation
multiple