首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >局部变量的类属性闭包

局部变量的类属性闭包
EN

Stack Overflow用户
提问于 2015-12-25 15:23:09
回答 2查看 182关注 0票数 0

我在“提速本”上没有找到答案。

这有可能为局部变量创建类似属性的闭包吗?我是说smt就像更多的片段:

代码语言:javascript
复制
 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元素的位置进行了复杂性评估。这个技巧应该能使我的代码更易读。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-25 15:37:18

这称为只读计算属性,可以省略getter以简化声明:

代码语言:javascript
复制
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关键字及其大括号来简化只读计算属性的声明:

文档快速概念属性

票数 1
EN

Stack Overflow用户

发布于 2015-12-25 16:05:30

为什么不试试这条路?

代码语言:javascript
复制
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,使用闭包很好,可以保存一些小函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34464036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档