我正在关注高级swift WWDC 2014视频,使用类上的下标委托给一个类属性,但是我使用与视频相同的语法收到错误
enum Direction {
case North, South, East, West
}
class Place: Thing {
init (_ location: Thing?, _ name: String, _ longDescription: String) {
self.exits = Dictionary<Direction, Place> ()
super.init(location, name, longDescription)
}
var exits: Dictionary<Direction, Place>
}
extension Place {
subscript(direction: Direction) -> Place? {
get {
return exits[direction]
}
set (destination: Place?) { // error here
exits[direction] = destination
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
Expected '{' to start setter definition
Run Code Online (Sandbox Code Playgroud)
省略setter中的类型,它会自动推断:
subscript(direction: Direction) -> Place? {
get {
return exits[direction]
}
set (destination) {
exits[direction] = destination
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以完全跳过参数,在这种情况下它隐式命名newValue:
subscript(direction: Direction) -> Place? {
get {
return exits[direction]
}
set {
exits[direction] = newValue
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3024 次 |
| 最近记录: |