我对在swift中使用 static 关键字有些困惑。众所周知,swift引入了 let
关键字来声明不可变对象。就像声明表视图单元格的ID一样,该ID在其生命周期中很可能不会发生变化。现在在一些类似struct的声明中使用 static
关键字是什么:
struct classConstants
{
static let test = "test"
static var totalCount = 0
}
而 让 关键字做同样的事情。在目标C中,我们使用static声明了一些常量,例如
static NSString *cellIdentifier=@"cellId";
除了让我更好奇的是,还使用了 static 关键字以及 let 和 var
关键字。有人可以解释一下该静态关键字在哪里使用吗?更重要的是,我们真的需要快速 静态化 吗?
我将为您分解它们:
var
:用于创建变量let
:用于创建常量 static
:用于创建类型属性与任一let
或var
。这些在类的所有对象之间共享。现在,您可以结合起来以得到期望的结果:
static let key = "API_KEY"
:常量的类型属性static var cnt = 0
:类型属性是一个变量let id = 0
:常量(只能分配一次,但可以在运行时分配)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
在Objective C中,我们使用static来声明一些常量,如 此外,更让我好奇的是static关键字和let以及var关键字的使用。谁能解释一下这个静态关键字在哪里用?更重要的是,在SWIFT中我们真的需要静态吗?
问题内容: 今天的工作中,我遇到了volatileJava中的关键字。不太熟悉,我找到了这种解释。 鉴于该文章详细解释了所讨论的关键字,您是否曾经使用过它,或者是否曾见过可以正确使用此关键字的情况? 问题答案: volatile具有内存可见性的语义。基本上,volatile字段的值对所有读取器(尤其是其他线程)可见,在该字段上完成写操作之后。没有volatile,读者可能会看到一些未更新的值。 要
具体来说,我正在尝试这个代码: 但它给出了错误 无法访问静态方法main中的非静态字段 所以我把的声明改为: 它起作用了。把这个关键字放在声明之前意味着什么?它到底会对这个对象做什么和/或限制什么?
我们可以编写包含或不包含的代码,如下所示。 或 的实际用途是什么?。这是内存效率更高还是可读性更强?
问题内容: 我正在网上关注Java教程,尝试学习该语言,并且它在使用数组的两种语义之间反弹。 和: 该教程从未真正提到过为什么它会在两者之间来回切换,所以我对该主题进行了一些搜索。我目前的理解是,操作员正在创建“ longs数组”类型的对象。我 不 明白的是为什么我要那个,那有什么后果? 是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用? 有什么我 不能 用普通数
问题内容: 怎么办?例如在函数中: 问题答案: 如果使用(或-ea简称)启动程序,则此语句 相当于 如果不使用此选项启动程序,则assert语句将无效。 例如,;在你的问题中发布的,等同于 (如果你启动的是。) Java语言规范assert正式为:14.10。该声明说: 14.10。的声明 的断言是一个含有一个布尔表达式语句。断言是启用还是禁用。如果启用了断言,则断言的执行将导致对布尔表达式进行求