2015-12-22 156 views
2

在if語句獲取問題...連續語句中的if語句

func sortStudents(students: [Student], byNames: [String]) -> [Student]{ 
     var result = [Student]() 

     for name in byNames { 
      if let students = students.filter{ $0.sName == name}{ 
       if students.count > 0{ 
        result.append(students[0]) 
       } 
      } 
     } 
     return result 
    } 

enter image description here

回答

1

從理論上講,這將是

if let students = students.filter({ $0.sName == name }) { ... } 

filter沒有按」 t返回可選,無論如何,所以你不應該使用if let語法。

所以,你可以這樣做:

func sortStudents(students: [Student], byNames: [String]) -> [Student]{ 
    var result = [Student]() 

    for name in byNames { 
     let students = students.filter { $0.sName == name } 
     if students.count > 0 { 
      result.append(students[0]) 
     } 
    } 
    return result 
} 
+0

*理論上,*'如果讓學生=(students.filter {$ 0.sName ==名稱}){...}'工作爲好,即你可以如果表達式包含在括號中,請使用尾隨閉包語法。 –