2014-07-27 18 views
7

Tôi đang cố gắng sao chép tất cả các chức năng từ python sang swift, bắt đầu với việc kiểm tra bất kỳ mục nào trong danh sách, nhưng tôi đang gặp khó khăn trong việc kiểm tra tùy chọn mặt hàng. Đối với một số lý do tôi có thể gửi một chuỗi tùy chọn (chuỗi ví dụ) và mặc dù nó nói nó là nil nó vẫn đi qua một tuyên bố nếu, mà nó không nằm ngoài chức năng. Bất kỳ lời khuyên nào về cách giải quyết vấn đề này hay cách khác để thực hiện nó? Cảm ơn!Làm thế nào để kiểm tra xem một kiểu generic là nil trong Swift

func `all`<T>(array: [T]) -> Bool { 
    for item in array { 
     if item as Any? { 
      println(item) // Says Nil >.< 
     } 
     var test: T? = item 
     if test { 
      println("Broken") // Prints broken :(
     } 
    } 
    return true 
} 

var t: String? 
all([t]) 

Trả lời

2

Không rõ chính xác những gì bạn đang cố kiểm tra, nhưng có thể điều này sẽ giúp ích.

Tham số với chức năng phải là một mảng của optionals [T?]

Nó cũng có thể mang lại lợi ích trực tiếp so sánh các yếu tố để nil. Việc so sánh có thể được trừu tượng hóa để đóng cửa giống như sử dụng chức năng filter.

func all<T>(array: [T?]) -> Bool { 
    for element in array { 
     if element==nil { 
      return false 
     } 
    } 
    return true 
} 
Các vấn đề liên quan