2016-12-02 47 views
1

菜鸟斯威夫特的问题 - 我想不出这是什么意思斯威夫特:这是什么意思?变量经跟着块没有分配

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

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

回答

2

这是一样的:

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

当你的计算机财产只有一个get,可以省略字get和大括号。

swift guide

您可以通过删除获取关键字和括号简化只读计算属性的声明:

1

这就是所谓的Read-Only Computed Properties

根据苹果文档

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

欲了解更多信息Computed Properties

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