Swift 语言中如何使用私有属性? [复制]

Posted

技术标签:

【中文标题】Swift 语言中如何使用私有属性? [复制]【英文标题】:How are private properties used in the Swift language? [duplicate] 【发布时间】:2014-07-24 04:19:58 【问题描述】:

在 swift 语言中似乎没有私有或公开的关键字。 所以有可能拥有私有财产吗?

顺便说一句,根据我目前的观察,Swift 与 Typescript 非常相似。

【问题讨论】:

【参考方案1】:

更新:

从 Xcode 6 beta 4 开始,Swift 具有访问控制 - https://developer.apple.com/swift/blog/?id=5


Swift 还没有访问修饰符。但是there are plans to add them in the future

上面链接的线程中还提到了一些解决方法,比如使用嵌套类:

import Foundation

class KSPoint 

    /*!
     * Inner class to hide the helper functions from codesense.
     */
    class _KSPointInner 
        class func distance(point p1 : KSPoint, toPoint p2 : KSPoint) -> Double 
            return sqrt(pow(Double(p2.x - p1.x), 2) + pow(Double(p2.y - p1.y), 2))
        
    

    var x : Int

    var y : Int

    init(x : Int = 0, y : Int = 0) 
        self.x = x
        self.y = y
    

    func distance(point : KSPoint, toPoint : KSPoint) -> Double 
        return _KSPointInner.distance(point: point, toPoint: toPoint)
    

【讨论】:

谁会因为不愉快而对真相投反对票? 正如您所提到的,嵌套类只是解决方法。 IMO,最好使用协议和工厂,或者为私有和受保护成员添加前缀并等待承诺的访问修饰符。 我投了反对票,因为起初所有的答案都是“Swift 还没有访问修饰符。但有计划在未来添加它们”,没有证据或解释细节。 @NSAddict javascript 一样,可以使用闭包作为实现隐私的可靠方法。 @JohnRiselvato 没有完整的代码示例,但是当您投反对票时,已经有指向 Apple 讨论论坛的链接,并且在此表单上,Apple 员工字面上承诺会有 访问修饰符。这怎么不是证据?

以上是关于Swift 语言中如何使用私有属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中获取类的私有属性名称? [复制]

“计算属性必须具有显式类型”错误:如何在 Swift 2.x 中列出文件? [复制]

如何在 Swift 中更改 UILabel 文本某些部分的字体属性? [复制]

有没有办法在 Swift 中使用 rate 属性来倒带音乐? [复制]

如何向子视图属性 Swift 添加操作? [复制]

Swift inout 如何在未更改时不复制回属性,以不触发对象设置器