2015-12-22 148 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 ==名称}){...}'工作为好,即你可以如果表达式包含在括号中,请使用尾随闭包语法。 –