【问题标题】:What does this mean? Variable declared followed by a block without assignment这是什么意思?声明的变量后跟一个没有赋值的块
【发布时间】:2017-04-17 00:42:16
【问题描述】:

Noob Swift 问题——我不知道这在 Swift 中意味着什么:

public var currentTime: NSTimeInterval? {
    return self.audioPlayer?.currentTime
}

currentTime 没有被分配给NSTimeInterval? 之后的代码块,这是什么意思?我的参考书中找不到这样的例子。

【问题讨论】:

    标签: swift


    【解决方案1】:

    我写了一个小操场来澄清一下:

    //: Computed properties
    
    import UIKit
    
    var variable_int = 1
    
    var computed_int: Int {
    get { return 1 }
    set { newValue }
    }
    
    var get_only_int: Int {
      return 1
    }
    
    var get_only_int_2: Int {
    get { return 1 }
    }
    
    variable_int = 2 // legal
    computed_int = 2 // legal
    
    // computed_read_only_int = 2   // 'computed_read_only_int' is a get-only property
    // computed_read_only_int_2 = 2 // 'computed_read_only_int_2' is a get-only property
    
    
    // This is another way to specify a variable you could find useful, I found it somewhere on natashatherobot.com
    var variable_int_2: Int = {
      return 1
    }()
    
    variable_int_2 = 2 // legal
    

    适用于 Xcode 8.1

    【讨论】:

      【解决方案2】:

      同理:

      public var currentTime: NSTimeInterval? {
          get { return self.audioPlayer?.currentTime }
      }
      

      当您的计算属性只有get 时,您可以省略单词get 和大括号。

      来自swift guide

      您可以通过删除 get 关键字及其大括号来简化只读计算属性的声明:

      【讨论】:

        【解决方案3】:

        这叫Read-Only Computed Properties

        根据苹果文档

        具有 getter 但没有 setter 的计算属性称为只读计算属性。只读计算属性总是返回一个值,并且可以通过点语法访问,但不能设置为不同的值。

        欲了解更多信息Computed Properties

        【讨论】:

          猜你喜欢
          • 2014-09-20
          • 2022-12-05
          • 2011-05-14
          • 2016-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多