reference - Swift -- "alias" an instance of an object -


working on simple card game learn swift , ios programming. function, following code work:

func dealcards() {      _ in 0...9 {          player1.carddealt(deck.getnextcard())         player2.carddealt(deck.getnextcard())         } } 

however, rotate dealer. know duplicate loop within if/else blocks, rather this:

func dealcards() {      // dealer considered position 2     if player1.isdealer() {         let pos1 = player2         let pos2 = player1     }     else {         let pos1 = player1         let pos2 = player2     }     _ in 0...9 {         pos1.carddealt(deck.getnextcard())         pos2.carddealt(deck.getnextcard())     } } 

i'm sure it's simple, can't seem figure out how alias player objects use them in way.

the problem code seems defining pos1 , pos2 inside each if statement, , these values cannot accessed outside these statements. need first define them outside statements , set values inside. define them player1 , player2 respectively, , swap values if player1.isdealer().

this how in end:

func dealcards() {     let pos1 = player1     let pos2 = player2      // dealer considered position 2     if player1.isdealer() {         pos1 = player2         pos2 = player1     }      _ in 0...9 {         pos1.carddealt(deck.getnextcard())         pos2.carddealt(deck.getnextcard())     } } 

a more compact way swap values using tuples , ternary operator:

   func dealcards() {      // dealer considered position 2     let (pos1, pos2) = player1.isdealer() ? (player2, player1) : (player1, player2)     //if player1 dealer, swap pos1 , pos2     _ in 0...9 {         pos1.carddealt(deck.getnextcard())         pos2.carddealt(deck.getnextcard())     } }  

Comments