Ios 局部变量的类属性闭包
我在速记中找不到我问题的答案 这是否可以在swift中为局部变量创建类似闭包的属性?我的意思是smt喜欢进一步的片段:Ios 局部变量的类属性闭包,ios,swift,closures,Ios,Swift,Closures,我在速记中找不到我问题的答案 这是否可以在swift中为局部变量创建类似闭包的属性?我的意思是smt喜欢进一步的片段: func someFunc() { // here goes our closure var myRect:CGRect { var x = 10 var y = 20 var width = 30 var heigth = 40 myRect = CGPointMake(x,y,widt
func someFunc() {
// here goes our closure
var myRect:CGRect {
var x = 10
var y = 20
var width = 30
var heigth = 40
myRect = CGPointMake(x,y,width,heigth)
}
}
我对UI元素的位置进行了复杂性评估。这个技巧应该使我的代码更具可读性这称为只读计算属性,您可以省略getter以简化声明:
var myRect: CGRect {
let x:CGFloat = 10
let y:CGFloat = 20
let width:CGFloat = 30
let height:CGFloat = 40
return CGRectMake(x, y, width, height)
}
只读计算属性
具有getter但没有setter的计算属性称为
只读计算属性。只读计算属性始终为空
返回一个值,可以通过点语法访问,但不能
设置为不同的值
注
必须声明计算属性,包括只读计算属性
属性作为带有var关键字的变量属性,因为
这个值不是固定的。let关键字仅用于常量
属性,以指示它们的值一旦更改就无法更改
设置为实例初始化的一部分
您可以通过以下方式简化只读计算属性的声明:
删除get关键字及其大括号:
为什么不试试这种方法
fun someFunc() {
var myRect = {() -> CGRect in
let x:CGFloat = 10.0
let y:CGFloat = 20.0
let width:CGFloat = 30.0
let height:CGFloat = 40.0
return CGRectMake(x,y,width,height)
}
myRect() //Call it
}
编辑我认为如果有一些计算点位置的要求,比如
maxElement
使用闭包可以保存一些小函数。它的目的是什么?这只是额外的代码,没有任何好处!如果你的一个方法变大了,就创建实用函数。好吧,我可以完全避免使用local属性来设置UIView的框架。谢谢你的回答我认为如果需要计算很多位置,这种方法可以减少一些小功能,但是对于这个问题的例子来说,似乎没有必要这样做。Leo是第一个,他的回答离问题稍微近一点。我必须给他打那个分数。对不起。不管怎样,我把你的答案投了更高的票,因为它不适合我的情况。我有很多视图,我不能存储所有的CGRect Ineed@O.G.O我想你不知道怎么用它。它的工作原理与另一个答案完全相同,你只需要在没有()的情况下调用它。我做了一些实验,你完全正确。我应该改变正确的答案,因为你是第一个。对不起,误会了