2015-01-03 24 views
6

Ho il codice seguente:Come utilizzare numeri negativi in ​​un intervallo in Swift?

switch self.score 
     { 
     case 1: 
      self.score = self.score - 2 
     case -10...-10000: // ! Expected expression after unary operator 
      println("lowest score") 
      self.score = -10 
     default: 
      self.score = self.score - 1 
     } 

Ho anche provato case -1000...-10:. Entrambi ottengono lo stesso errore ! Expected expression after unary operator.

Quello che mi piacerebbe davvero fare è case <= -10:, ma non riesco a capire come farlo senza ottenere questo errore Unary operator cannot be separated from its operand.

Cosa non capisco?

+2

Prova di avvolgimento tra parentesi forse? – Rufflewind

+0

Purtroppo anche questo non funziona. – webmagnets

risposta

9

Nel contesto di un caso di commutazione, a ... b è un "intervallo chiuso" e l'avvio deve essere minore o uguale alla fine dell'intervallo. Anche un segno più o meno deve essere separati da ... da uno spazio (o il numero racchiuso tra parentesi), quindi entrambi

case -10000...(-10): 
case -10000 ... -10: 

lavoro.

case <= -10: possono essere scritti in Swift utilizzando una "clausola where":

case let x where x <= -10: 
+0

Che funziona. Dove posso leggere di più sulla sintassi "where"? – webmagnets

+2

@webmagnets: nella sezione "Dove" della documentazione: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html: * "Un caso switch può utilizzare una clausola where per verificare condizioni aggiuntive ... "* –

Problemi correlati