【问题标题】:Unexplained keywords in Swift: left, none, right, Type. What do they do?Swift 中无法解释的关键字:left、none、right、Type。他们在做什么?
【发布时间】:2015-08-13 10:29:09
【问题描述】:

我一直在阅读 Apple 的 Swift Programming Language 书籍(针对 Swift 2.0 更新的版本),我发现了一些相当奇怪的东西。 在Language Reference > Lexical Stricture > Keywords and Punctuationlink here - 但你需要向下滚动一点)有一个语言关键字列表。其中一些没有在任何地方得到解释。

在特定上下文中保留的关键字:associativity、convenience、dynamic、didSet、final、get、infix、inout、lazy、left、mutating、none、nonmutating、optional 、覆盖、后缀、优先级、前缀、协议、必需、right、set、Type、unowned、weak 和 willSet。在它们出现在语法中的上下文之外,它们可以用作标识符。

您是否知道它们的作用/含义或在哪里可以找到适用的信息?

【问题讨论】:

    标签: ios macos swift


    【解决方案1】:

    leftrightnone 用于指定自定义运算符的关联性:

    运算符的关联性指定在没有分组括号的情况下,如何将具有相同优先级的运算符序列分组在一起。您可以通过编写上下文相关关键字 associativity 后跟关联性来指定运算符的关联性,关联性是上下文相关关键字 left、right 或 none 之一。

    https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/associativity

    Type 与元类型一起使用:

    元类型类型是指任何类型的类型,包括类类型、结构类型、枚举类型和协议类型。

    类、结构或枚举类型的元类型是该类型的名称后跟 .Type。

    https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/swift/grammar/metatype-type

    【讨论】:

    • 这里:developer.apple.com/library/ios/documentation/Swift/Conceptual/… 在 Metatype Type 部分,你可以找到关于 Type
    • 是的,发帖后就找到了。谢谢@DánielNagy!
    • 现在我的问题是关于 MyClass.Type 和 MyClass.self 中 .Type 和 .self 之间的区别
    • @BR41N-FCK 这在 Guillaume 给出的第二个链接的文章中有解释——只需在页面中搜索 “.Type” 即可。简而言之,.Type 将元类型作为类型 提供给您(用于指定变量的类型或typealias.self 将元类型作为值提供给您(有用用于存储在变量中)。在 Apple 的示例代码中,let metatype: AnotherSubClass.Type = AnotherSubClass.self——所以基本上AnotherSubClass.self 返回一个AnotherSubClass.Type 类型的值。
    • @SlippD.Thompson 嗯,我该怎么说...你知道我在 2015 年提交了我的问题吗?现在它已经完全过时了:-)
    【解决方案2】:

    leftrightnone 用于声明运算符时的关联性排序,例如:

    infix operator ⊕ { associativity left precedence 140 }
    

    the Apple docs

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 2017-11-24
      • 1970-01-01
      • 2021-09-04
      • 2015-01-26
      相关资源
      最近更新 更多