【发布时间】:2017-04-17 00:42:16
【问题描述】:
Noob Swift 问题——我不知道这在 Swift 中意味着什么:
public var currentTime: NSTimeInterval? {
return self.audioPlayer?.currentTime
}
currentTime 没有被分配给NSTimeInterval? 之后的代码块,这是什么意思?我的参考书中找不到这样的例子。
【问题讨论】:
标签: swift
Noob Swift 问题——我不知道这在 Swift 中意味着什么:
public var currentTime: NSTimeInterval? {
return self.audioPlayer?.currentTime
}
currentTime 没有被分配给NSTimeInterval? 之后的代码块,这是什么意思?我的参考书中找不到这样的例子。
【问题讨论】:
标签: swift
我写了一个小操场来澄清一下:
//: 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
【讨论】:
同理:
public var currentTime: NSTimeInterval? {
get { return self.audioPlayer?.currentTime }
}
当您的计算属性只有get 时,您可以省略单词get 和大括号。
来自swift guide:
您可以通过删除 get 关键字及其大括号来简化只读计算属性的声明:
【讨论】:
这叫Read-Only Computed Properties
根据苹果文档
具有 getter 但没有 setter 的计算属性称为只读计算属性。只读计算属性总是返回一个值,并且可以通过点语法访问,但不能设置为不同的值。
欲了解更多信息Computed Properties
【讨论】: