我没有在swiftbook中找到我的问题的答案。
这可以在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,width,heigth)
}
}
我对UI元素位置进行了复杂性评估。这个技巧应该使我的代码更具可读性
答案 0 :(得分:1)
这称为只读计算属性,您可以省略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的计算属性称为a 只读计算属性。始终是只读计算属性 返回一个值,可以通过点语法访问,但不能 设置为不同的值。
请注意
您必须声明计算属性 - 包括只读计算 properties - 作为var关键字的变量属性,因为它们的 价值不固定。 let关键字仅用于常量 属性,表示一旦它们的值无法更改 被设置为实例初始化的一部分。
您可以通过简化只读计算属性的声明 删除get关键字及其大括号:
答案 1 :(得分:1)
为什么不尝试这种方式?
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
那样的点位置,那么使用闭包可以保存一些小函数。