Créateur d’applications mobiles
#TECHTALK
TechTalk gratuits et ouverts au public au sein de nos locaux ! N’hésitez pas à vous inscrire aux prochaines sessions sur notre site: ripplemotion-services.fr
#TECHTALK
TechTalk sous forme de courtes formations le mercredi de 17h à 18h ! Échange entre vous et nos spécialistes en développement mobile
RMS TECHTALK ANIMÉ PAR :
OLIVIER TABONE Co-fondateur / Directeur
[email protected] 06 83 01 05 76
GAME OF MUTABILITY SONG OF VALUE AND REFERENCE
RMS Tech Talk #8 - 04.01.2017
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Reference Type Value Type Value Semantics
6
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Reference Type “variables share ownership of the value” - OTA
7
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Value Type “variable owns the value” - OTA
8
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Type with Value Semantics “variable are logically distinct” - Apple
9
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Type with Value Semantics “variable are logically distinct” - Apple
? F T W 10
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Type with Value Semantics “variable are logically distinct” - Apple
E U L VA ? S E P Y T
? F T W 11
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
MUTABILITY GAME Team Valeureux
Vs
Team Mutateur Attaque les valeurs des autres
defend ses valeurs
12
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = … var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 13
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v: Int = 123 var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 14
TechTalk #8 - 04.01.2017
var v: Int = 123 OLIVIER TABONE Co-fondateur / Directeur
var x = v let v0 = valueOf(v) // 123 x = 456 let v1 = valueOf(v) // 123 assert(v0 == v1) // Valeureux wins 15
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = NSMutableString() var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 16
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = NSMutableString() var x = v let v0 = valueOf(v) // empty string x.append(string:”hi there”) let v1 = valueOf(v) // “hi there” assert(v0 == v1) // false, Mutateurs wins 17
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = [1, 2, 3] var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 18
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = [1, 2, 3] var x = v let v0 = valueOf(v) // [1, 2, 3] x.append(4) let v1 = valueOf(v) // [1, 2, 3] assert(v0 == v1) // true, Valeureux wins 19
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = UIImage(name:”Icon.png”) var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 20
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = UIImage(name:”Icon.png”) var x = v let v0 = valueOf(v) // Icon.png //UIImage is an immutable reference type let v1 = valueOf(v) // Icon.png assert(v0 == v1) // True, Valeureux wins 21
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = [NSMutableString(“”)] var x = v let v0 = valueOf(v) // snapshot value of v // mutateur attacks defended value
// can only use x let v1 = valueOf(v) // snapshot value of v assert(v0 == v1) // if true, Valeureux wins 22
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
// valeureux defines a variable of type he wants // to defend var v = [NSMutableString(“”)] var x = v let v0 = valueOf(v) // [“”,] x[0].append(string:”pouet”)
let v1 = valueOf(v) // [“pouet”,] assert(v0 == v1) // false Mutateurs wins 23
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Type with Value Semantics “always wins the mutability game” - Matt Gallagher
24
TechTalk #8 - 04.01.2017
OLIVIER TABONE Co-fondateur / Directeur
VALUE VS REFERENCE IN SWIFT Immutable reference types do have value semantics. Value Type may not have value semantics.
25
Merci de votre participation !
OLIVIER TABONE Co-fondateur / Directeur
[email protected] 06 83 01 05 76
Créateur d’applications mobiles