这是什么意思?声明的变量后跟一个没有赋值的块

时间:2016-12-02 07:00:58

标签: swift

Noob Swift问题 - 我无法弄清楚这在Swift中意味着什么:

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

currentTime未在NSTimeInterval?之后分配给代码块,那么这意味着什么?我的参考书中不能有这样的例子。

3 个答案:

答案 0 :(得分:2)

与以下内容相同:

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

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

来自swift guide

  

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

答案 1 :(得分:1)

这称为Read-Only Computed Properties

根据Apple Docs

  

具有getter但没有setter的计算属性称为只读计算属性。只读计算属性始终返回一个值,可以通过点语法访问,但不能设置为其他值。

了解更多信息Computed Properties

答案 2 :(得分: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

相关问题