一尘不染

Swift`in`关键字的含义?

swift

我正在尝试从parse.com实现一些代码,并且in在void后发现一个关键字。

我难住了,这是什么?您在第二行看到Void in

PFUser.logInWithUsernameInBackground("myname", password:"mypass") {
  (user: PFUser?, error: NSError?) -> Void in
  if user != nil {
    // Do stuff after successful login.
  } else {
    // The login failed. Check error to see why.
  }
}

该文档没有对此进行说明。我知道in关键字用于for循环。

有人确认吗?


阅读 387

收藏
2020-07-07

共1个答案

一尘不染

在命名函数中,我们声明参数并在func声明行中返回类型。

func say(s:String)->() {
    // body
}

在匿名函数中,没有func声明行-它是匿名的!因此,我们in在正文的开头使用一行来代替。

{
    (s:String)->() in
    // body
}

(这是匿名函数的 完整 形式。但是Swift拥有一系列规则,允许in在某些情况下省略返回类型,参数类型,甚至参数名称和整行。)

2020-07-07