在函数参数中使用 "in"

Use of "in" in a function's arguments

我一直在关注 Ray Wenderlich 的书 Advanced iOS App Architecture,他们有一个如下所示的协议:

protocol RideOptionDeterminedResponder {
  func pickUpUser(in rideOptionID: RideOptionID)
}

我不明白 inrideOptionID 参数之前的用法(顺便说一句,它只是 String 的类型别名),因为我一直以为你只使用了 this 关键字写闭包的时候。我已经四处寻找 in 的用途,但没有任何运气。

这里 in 的目的是什么,如果没有它,功能会有什么不同?

(如果您需要有关此功能如何工作的更多信息以便更好地解释自己,请告诉我。)

这里的in关键字只是用来指定函数中的参数。在调用该函数时,您可以将其称为:

pickUpUser(in: rideOptionID)

如果 in 不存在,您必须将其命名为:

pickUpUser(rideOptionID: rideOptionID)

您可以通过 Swift Documentation 了解有关 Specifying Argument Labels

的更多详细信息

Swift 中的函数同时支持外部名称和内部名称。这实际上意味着您可以使用两个不同的名称来引用相同的参数。这就是你提供的代码中的in,一个外部参数名称。

外部参数和内部参数的区别在于,调用方法时使用第一个参数,处理方法体内的值时使用第二个参数。

因此,您可以这样调用该方法:

// Call the method using the external parameter name in
pickUpUser(in: someRideOptionID)

func pickUpUser(in rideOptionID: RideOptionID) {
  // Do something with the value, accessing it using the internal parameter name rideOptionID
}