无法分配给此表达式的结果
Cannot assign to the result of this expression
我正在对 uiscrollview 进行子类化,在 layoutSubviews 方法中我有以下内容
let v = self.delegate?.viewForZoomingInScrollView!(self)
let f = v?.frame
if f != nil {
f!.origin.x = 100
}
我遇到错误:
Cannot assign to the result of this expression
在线
f!.origin.x = 100
我哪里错了
因为 f
声明为 let
且不可变。
在您的代码中 f
被声明为不可变变量。不可变变量在声明初始赋值后不能更改。
let variable_name = 10
variable_name = 11 // Cannot assign to let value 'v'
let
关键字用于声明不可变变量。
var
关键字用于声明可变变量。
var variable_name = 10
variable_name = 14 // Can be changed
所以将您的代码更改为 var f = v?.frame
。
此外,如果您尝试修改视图的框架,只有直接分配给 view?.frame.origin.x = 100
才会起作用,因为上面的代码只会在 [=12= 中创建框架的副本].
我正在对 uiscrollview 进行子类化,在 layoutSubviews 方法中我有以下内容
let v = self.delegate?.viewForZoomingInScrollView!(self)
let f = v?.frame
if f != nil {
f!.origin.x = 100
}
我遇到错误:
Cannot assign to the result of this expression
在线
f!.origin.x = 100
我哪里错了
因为 f
声明为 let
且不可变。
在您的代码中 f
被声明为不可变变量。不可变变量在声明初始赋值后不能更改。
let variable_name = 10
variable_name = 11 // Cannot assign to let value 'v'
let
关键字用于声明不可变变量。
var
关键字用于声明可变变量。
var variable_name = 10
variable_name = 14 // Can be changed
所以将您的代码更改为 var f = v?.frame
。
此外,如果您尝试修改视图的框架,只有直接分配给 view?.frame.origin.x = 100
才会起作用,因为上面的代码只会在 [=12= 中创建框架的副本].