加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读