gpt4 book ai didi

swift - "Expression resolves to an unused l-value"与 "Expression is unused"

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:05 25 4
gpt4 key购买 nike

考虑以下代码:

class Foo {
let bar = "Hello world!"
init () {
self // Warning: Expression of type 'Foo' is unused
self.bar // Error: Expression resolves to an unused l-value
}
func test () {
self.bar // Warning: Expression of type 'String' is unused
}
}

为什么消息不同,为什么只有一个错误?我明白它们的意思,只是不明白为什么编译器会以不同的方式处理它们。

最佳答案

编译器之所以在初始化程序中将 self.bar 视为左值,是因为在初始化期间您可以在初始化期间的任何时候为常量属性赋值即使您已将其声明为常量,编译器也会将其视为错误,因为有机会修改常量...

虽然 test() 函数中的 self.bar 被视为右值,因为该属性被声明为常量并且编译器知道您无法修改它所以不会产生错误,它将被视为 r 值并且返回值未被使用..

如果您需要更好地理解,请尝试将您的属性更改为变量而不是常量,您会发现即使是 test() 方法中的 self.bar 语句会出错,因为编译器猜测这个值也可以是左值。

class Foo {
var bar = "Hello world!"
init () {
self // Warning: Expression of type 'Foo' is unused
self.bar // Error: Expression resolves to an unused l-value
}
func test () {
self.bar // Changed to : Error: Expression resolves to an unused l-value
}
}

关于swift - "Expression resolves to an unused l-value"与 "Expression is unused",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com