【问题标题】:Use of "in" in a function's arguments [duplicate]在函数的参数中使用“in”[重复]
【发布时间】:2020-09-21 09:51:12
【问题描述】:

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

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

我不理解inrideOptionID 参数之前的us(顺便说一句,它只是String 的类型别名),因为我一直认为您在编写闭包时只使用了这个关键字。我环顾四周寻找in 的用法,但没有任何运气。

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

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

【问题讨论】:

  • 它只是让代码更漂亮。当你调用这个函数时,你会写pickUpUser(in: someId),它看起来比pickUpUser(rideOptionID: rideOptionID)更漂亮。
  • 如果你用_替换了in,那么你会调用像pickUpUser(someId)这样的函数
  • 谢谢大家。感谢您的快速支持!如果我可以将两个答案都标记为已接受,我会的。

标签: swift function parameters keyword


【解决方案1】:

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
}

【讨论】:

    【解决方案2】:

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

    pickUpUser(in: rideOptionID)
    

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

    pickUpUser(rideOptionID: rideOptionID)
    

    您可以通过Swift Documentation了解更多关于Specifying Argument Labels的详细信息

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多