语法解释:Swift中的方括号

时间:2014-12-24 14:08:53

标签: ios arrays swift

我正在研究Swift,并且对以下语法感到困惑:

 var treasures: [Treasure] = []

Treasure是自定义类,声明如下:

class Treasure: NSObject {
...

在Obj-C中,方括号表示方法,但这意味着什么:

  var treasures: [Treasure] = []

有人可以提供解释吗?谢谢!

2 个答案:

答案 0 :(得分:13)

[Treasure] 只是Array<Treasure>的语法糖

同样的方式[String:Treasure]只是Dictionary<String,Treasure>的语法糖。

[] 只是您定义的类型的空数组。同样的方式[:]是一个空字典。

说到Swift和方括号,规则很简单。它们仅在两种情况下使用:

1)使用数组和词典类型:

let vectors : [[Int]] = [[1,2,3],[4,5,6]]
let birthBook : [Int:[String]] = [1987:["John","William"], 1990: ["Mary"]]

2)支持下标的下标对象

class RouteMapper {

    private var routeMap : [String:String] = [:]

    subscript(endpoint: String) -> String {
        get {
            if let route = routeMap[endpoint] {
                return route
            }
            return "/"
        }
        set(newValue) {
            routeMap[endpoint] = newValue
        }
    }
}

let routeMapper = RouteMapper()
routeMapper["users"] = "/v1/confirmed/users"
let url = routeMapper["admins"]

由于自定义运算符中不允许使用[],因此这些是目前唯一的用法。

答案 1 :(得分:13)

好的,这就是

的含义
var treasures: [Treasure] = []
  • var :您要声明变量
  • 宝藏:变量的名称
  • [Treasure] :变量的类型,在这种情况下类型为Array of Treasure,编译器将允许您在数组中仅插入Treasure类型的对象
  • [] :变量引用的实际对象(Array),在本例中为空数组。

E.g。如果你想让数组保存2个元素,你可以编写

var treasures: [Treasure] = [Treasure(), Treasure()]

希望这有帮助。

<强>更新 我的例子也可以这样写出

var treasures = [Treasure(), Treasure()]

事实上,由于 类型推断 ,编译器可以推断变量的类型 宝藏 指定值的类型。