2015-01-03 33 views
6

Mam następujący kod:Jak używać liczb ujemnych w zakresie w 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 
     } 

Próbowałem również case -1000...-10:. Oba otrzymują ten sam błąd ! Expected expression after unary operator.

Co naprawdę chciałbym zrobić, to case <= -10:, ale nie mogę wymyślić, jak to zrobić bez uzyskania tego błędu Unary operator cannot be separated from its operand.

Czego nie rozumiem?

+2

Spróbuj owijania w nawiasie może być? – Rufflewind

+0

Niestety to też nie działa. – webmagnets

Odpowiedz

9

W kontekście przypadku przełącznika a ... b to "zamknięty interwał", a początek musi być mniejszy lub równy końcowi przedziału. Ponadto plus lub minus może być oddzielony od ... w przestrzeni (lub liczby zamkniętym w nawiasach), a więc zarówno

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

pracy.

case <= -10: mogą być napisane w Swift przy użyciu "gdzie klauzula":

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

To działa. Gdzie mogę przeczytać więcej o tej "gdzie" składni? – webmagnets

+2

@webmagnets: W sekcji "Gdzie" dokumentacji: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html: * "W przypadku przełącznika można użyć klauzuli where aby sprawdzić dodatkowe warunki ... "* –