我在“提速本”上没有找到答案。
这有可能为局部变量创建类似属性的闭包吗?我是说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,width,heigth)
}
}我对UI元素的位置进行了复杂性评估。这个技巧应该能使我的代码更易读。
发布于 2015-12-25 15:37:18
这称为只读计算属性,可以省略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关键字及其大括号来简化只读计算属性的声明:
发布于 2015-12-25 16:05:30
为什么不试试这条路?
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,使用闭包很好,可以保存一些小函数。
https://stackoverflow.com/questions/34464036
复制相似问题