当前位置:  开发笔记 > IOS > 正文

如果"let"关键字用于在swift中定义常量/不可变,那么"static"关键字的用途是什么?

如何解决《如果"let"关键字用于在swift中定义常量/不可变,那么"static"关键字的用途是什么?》经验,为你挑选了3个好方法。

我对在swift中使用static关键字感到有些困惑.正如我们所知,swift引入了let关键字来声明不可变对象.就像声明一个表视图单元的id一样,它最有可能在其生命周期内不会改变.现在什么是在一些struct的声明中使用static关键字:

struct classConstants
{
    static let test = "test"
    static var totalCount = 0
}

let关键字也是这样.在Objective C中,我们使用static来声明一些常量

static NSString *cellIdentifier=@"cellId";

除此之外让我更好奇的是使用static关键字以及letvar关键字.谁能解释一下我在哪里使用这个静态关键字?更重要的是我们真的需要swift的静态吗?



1> Alex Pelleti..:

我会为你打破它们:

var :用于创建变量

let :用于创建常量

static:用于创建类型属性与任一letvar.这些在类的所有对象之间共享.

现在你可以结合起来,得到所需的结果:

static let key = "API_KEY" :type属性是常量

static var cnt = 0 :type属性是一个变量

let id = 0 :constant(只能分配一次,但可以在运行时分配)

var price = 0 :变量

所以总结一下var并让我们在静态和缺乏定义范围时定义可变性.您可能static var用来跟踪已创建的实例数,而您可能只想使用var不同于对象的价格.希望这可以解决一些问题.

示例代码:

class MyClass{
    static let typeProperty = "API_KEY"
    static var instancesOfMyClass = 0
    var price = 9.99
    let id = 5

}

let obj = MyClass()
obj.price // 9.99
obj.id // 5

MyClass.typeProperty // "API_KEY"
MyClass.instancesOfMyClass // 0



2> Bobby..:

静态变量通过类的所有实例共享.在操场上抛出这个例子:

class Vehicle {
    var car = "Lexus"
    static var suv = "Jeep"
}

// changing nonstatic variable
Vehicle().car // Lexus
Vehicle().car = "Mercedes"
Vehicle().car // Lexus

// changing static variable
Vehicle.suv // Jeep
Vehicle.suv = "Hummer"
Vehicle.suv // Hummer

更改静态属性的变量时,该属性现在将在以后的所有实例中更改.


你的答案应该是最重要的

3> Vinoth Vino..:

静态变量属于类型而不是类的实例.您可以使用类型的全名访问静态变量.

码:

class IOS {

  var iosStoredTypeProperty = "iOS Developer"

  static var swiftStoredTypeProperty = "Swift Developer"

 }

 //Access the iosStoredTypeProperty by way of creating instance of IOS Class

let iOSObj = IOS()

print(iOSObj.iosStoredTypeProperty)  // iOS Developer


 //print(iOSObj.swiftStoredTypeProperty) 
 //Xcode shows the error 
 //"static member 'swiftStoredTypeProperty' cannot be used on instance of type IOS”


 //You can access the static property by using full name of the type
print(IOS.swiftStoredTypeProperty)  // Swift Developer

希望这可以帮助你..

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有