"let"和"static let"有什么区别?

Mac*_*eus 1 static-variables swift

class Foo {
    let fooValue = 1
}

print(Foo.fooValue) // not work


class Bar {
    static let barValue = 1
}

print(Bar.barValue) // work; print "1"
Run Code Online (Sandbox Code Playgroud)

为什么?我希望这个Foo例子能够工作,因为值fooValue是在编译时知道的常量,值和内存地址.但我需要使用关键字static来工作.

Ale*_*ica 14

fooValue是一个实例属性.fooValue每个实例(对象)都有一个单独的Foo类.

barValue是一个静态属性.有一个共享barValue属于该类.

这是一个更具体的例子.假设我有这个课程:

class Human {
    static let numberOfLimbs = 4
    let name: String
}
Run Code Online (Sandbox Code Playgroud)

如果我问你人类的名字是什么,你会发生什么?即Human.name.好吧,你无法回答我,因为没有一个人的名字.每个人都有一个单独的名字.但是,你可以告诉我人类拥有的肢体数量(Human.numberOfLimbs),(几乎)总是4.


归档时间:

查看次数:

4577 次

最近记录:

8 年,8 月 前