在Swift中使用String的enumerateLines函数
发布时间:2020-12-14 02:23:22 所属栏目:百科 来源:网络整理
导读:Swift的String类型的enumerateLines函数声明如下: enumerateLines(body: (line: String,inout stop: Bool) - ()) 据我了解,这个声明意味着:“enumerateLines是一个带闭包的函数,body,它传递两个变量,line和stop,并返回void.” 根据Swift Programming Langu
Swift的String类型的enumerateLines函数声明如下:
enumerateLines(body: (line: String,inout stop: Bool) -> ()) 据我了解,这个声明意味着:“enumerateLines是一个带闭包的函数,body,它传递两个变量,line和stop,并返回void.” 根据Swift Programming Language book,我相信我应该能够以一个简洁的简洁方式调用enumerateLines并使用尾随闭包,如下所示: var someString = "Hello" someString.enumerateLines() { // Do something with the line here } ..但是会导致编译错误: 元组类型'(line:String,inout stop:Bool)’和'(”具有不同数量的元素(2对0) 那么我尝试显式地放入参数,并取消尾随闭包: addressString.enumerateLines((line: String,stop: Bool) { // Do something with the line here }) …但是会导致错误: ‘(() – >() – > $T2) – > $T3’与'(line:String.Type,stop:Bool.Type)不同 简而言之,我尝试过的语法没有导致任何可以成功编译的语法. 任何人都可以在我的理解中指出错误并提供一个可行的语法吗?我正在使用Xcode 6 Beta 4.
closure expression syntax具有一般形式
{ (parameters) -> return type in statements } 在这种情况下: addressString.enumerateLines ({ (line: String,inout stop: Bool) -> () in println(line) }) 或者,使用尾随闭包语法: addressString.enumerateLines { (line: String,inout stop: Bool) in println(line) } 由于自动类型推断,这可以缩短为 addressString.enumerateLines { line,stop in println(line) } Swift 3更新: addressString.enumerateLines { (line,stop) in print(line) // Optionally: if someCondition {stop = true } } 或者,如果您不需要“停止”参数: addressString.enumerateLines { (line,_) in print(line) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |