是什么区别let,并var在苹果的雨燕语言?
根据我的理解,它是一种编译语言,但它不会在编译时检查类型.这让我感到困惑.编译器如何知道类型错误?如果编译器没有检查类型,那么生产环境是不是有问题?
来自Apple的书"结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的."
任何人都可以让我理解这意味着什么,对我来说,类和结构似乎是一样的.
我有一个struct:
public struct MyStruct {
public var myInt: Int = 0
...
}
Run Code Online (Sandbox Code Playgroud)
我有一个扩展MyStruct:
extension MyStruct {
public func updateValue(newValue: Int) {
// ERROR: Cannot assigned to property: 'self' is immutable
self.MyInt = newValue
}
}
Run Code Online (Sandbox Code Playgroud)
我收到上面显示的错误,我知道我可以通过多种方式修复错误,例如mutating之前添加关键字func.
我在这里不是问如何修复错误,但问为什么swift不允许这种值赋值?除了修复之外我还需要一个解释.
在Swift 4中,许多基金会团队已经讨论过使用keyPaths与Swift 3相比有多容易.这引出了一个问题......什么是keyPath?说真的,我找不到任何明确的资源.
在Swift中,我正在尝试执行以下操作:
struct Foo {
var bar = 1
func baz() {
bar = 2
}
}
Run Code Online (Sandbox Code Playgroud)
Xcode报告Cannot assign to 'bar' in self方法中的行错误.
为什么?如果我将结构更改为类,则没有错误.