swift - : in Swift function signatures and why is there no comma when it seems there should be one?是什么意思

标签 swift

这是我所说的示例:https://developer.apple.com/documentation/foundation/nsmutableorderedset/1410287-insert

插入函数显示为insert(_:at:)

实际使用时,插入函数看起来更像:

namesArray.insert("John", at: 3)

"John" 之后没有 :(虽然我想它可能是 "John":String -- 就是它在那里的样子for?), 而文档中的函数签名中没有提到实际需要去那里的 , 。当我实际使用它时,我是否应该知道/假设逗号在那里?所有 Swift 函数都是这种情况吗?

请注意,这不是关于下划线 _ 的问题——我理解它为什么在那里以及它的用途。我特别询问在函数签名中包含 : 而不包含 , 的原因。

最佳答案

在文档中经常看到的约定是一种引用函数的简洁方式,仅使用函数名称和参数标签。

所以考虑这个函数声明:

func insert(_ objects: [Any], at indexes: IndexSet)

这是

  • 一个名为insert的方法;
  • 第一个参数名为objects,此参数没有参数标签(用_指定),类型为[Any];和
  • 第二个参数名称为indexes,其参数标签为at,类型为IndexSet

所以你这样调用它:

insert(someObjects, at: someIndex)

当你调用它时,你不关心函数内部使用的参数名称是什么,而只关心参数标签是什么。因此,在文档中引用该方法时的约定是省略参数名称和类型,只使用函数名称和参数标签,但不使用逗号:

insert(_:at:)

请注意,您永远不会在代码中实际使用此语法。这只是一种文档约定,用于将长函数声明提炼成更易于管理和简洁的内容:

transition

有关参数标签和参数名称的更多信息,请参阅 Function Argument Labels and Parameter Names

关于swift - : in Swift function signatures and why is there no comma when it seems there should be one?是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537403/

相关文章:

swift - 如何在 Sprite Kit 中使用 SKAction 永远重复缩放对象

ios - 在 Swift 中运行 Core Data Manager 的类初始值设定项

ios - 为什么在 swift 中一切都是元组?

ios - 在 SwiftUI 中将 @FetchRequest 与 Core Data 一起使用时修改 nil 排序行为

macos - 在 AppDelegate 中丢失对 NSWindows 的引用

for 循环中的 Swift 闭包

arrays - 使 JSON 响应符合结构和数组 Swift

ios - 使用闭包的函数签名在其他类中显示不正确

swift - Realm :无法使用 'add(_:update:)' 类型的参数列表调用 '(String)'

ios - 将用户重定向到 iOS facebook 应用程序而不是浏览器窗口进行身份验证