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
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 !
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 } }
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
class Person { private String name String getName() { return name } void setName(String name) { this.name = name } String greet() { return "Hello, my name is " + name } }
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
class Person { private String name String getName() { name } void setName(String name) { this.name = name } String greet() { "Hello, my name is " + name } }
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
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; } }
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
? 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