赞
踩
让我们先开始了解Struct。存储在内存中的结构属性不同于类。类属性在堆内存中有引用因此类有指针,您可以直接更改内存中的值并且类继续在堆中引用已更改的值但是结构是值类型构造这意味着当您更改值时,您需要更改结构本身。
让我们从非常基本的例子开始:
struct Test {
private var a = 0
func change() {
a = 2
}
}
在这里,我们从一个测试结构开始,创建了一个私有的 var int = 0 并创建了 change func,基本上改变了一个参数。但是这里编译器抱怨这个错误:无法分配给属性:'self’是不可变的
为了解决这个问题,我们需要添加mutating func,它显示了这个函数 mutates struct。这如何帮助这种变异以及我们为什么需要它?
让我们继续使用这个测试结构:
private func test () {
let test = Test ()
test.change()
}
如果我们的 change func 没有发生变异,那么在我们向函数添加变异后,这段代码就不会抱怨。编译器会报错:Cannot use mutating member on immutable value: ‘test’ is a ‘let’ constant
此外,如果我们定义 let Struct -> 我们确信它的属性也是不可变的。我们知道这对课堂来说并非如此。
让我们继续 SwiftUI,
struct ContentView: View {
@State private var sliderValu
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。