2015-01-03 16 views
6

Tôi có đoạn mã sau:Làm cách nào để sử dụng các số âm trong một phạm vi trong 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 
     } 

Tôi cũng đã cố gắng case -1000...-10:. Cả hai đều gặp lỗi giống nhau ! Expected expression after unary operator.

Điều tôi thực sự muốn làm là case <= -10:, nhưng tôi không thể tìm ra cách thực hiện điều đó mà không gặp lỗi này Unary operator cannot be separated from its operand.

Tôi không hiểu gì?

+2

Hãy thử gói trong ngoặc đơn có thể? – Rufflewind

+0

Thật không may là không hoạt động. – webmagnets

Trả lời

9

Trong ngữ cảnh trường hợp chuyển đổi, a ... b là "khoảng thời gian đóng" và bắt đầu phải ít hơn hoặc bằng khoảng thời gian kết thúc. Cũng là một cộng hoặc trừ dấu hiệu phải tách ra khỏi ... bởi một không gian (hoặc số trong dấu ngoặc đơn), vì vậy cả hai

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

làm việc.

case <= -10: thể được viết bằng Swift sử dụng một "mệnh đề where":

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

Điều đó có hiệu quả. Tôi có thể đọc thêm về cú pháp "where" ở đâu? – webmagnets

+2

@webmagnets: Trong phần "Ở đâu" của tài liệu: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html: * "Một trường hợp chuyển đổi có thể sử dụng mệnh đề where để kiểm tra các điều kiện bổ sung ... "* –

Các vấn đề liên quan