Swift中的数据封装

我已经阅读了整个 Swift book,并观看了所有 WWDC videos(我衷心推荐所有这些).我担心的一件事是数据封装.

考虑以下(完全做作的)示例:

class Stack<T>
{
    var items : T[] = []

    func push( newItem: T ) {
        items.insert( newItem,atIndex: 0 )
    }

    func pop() -> T? {
        if items.count == 0 {
            return nil;
        }

        return items.removeAtIndex( 0 );
    }
}

此类实现堆栈,并使用Array实现它.问题是,项目(如Swift中的所有属性)都是公共的,因此没有任何东西阻止任何人直接访问(甚至变异)它与公共API分开.作为一个吝啬的老C家伙,这让我非常脾气暴躁.

我看到有人抱怨缺乏访问修饰符,虽然我同意他们会直接解决这个问题(我听说有传言说他们可能会实施Soon(TM)),但我想知道一些数据隐藏策略会在他们缺席时出现.

我错过了什么,或者这只是语言中的遗漏?

目前它完全没有了. Greg Parker明确表示( in this dev forums thread)可见性调节剂即将到来.

鉴于没有标题,标准的Objective-C技巧将不起作用,我想不出另一个限制可见性的技巧,不会涉及大量向后弯曲.由于语言功能已被承诺,我不确定它是否值得任何大笔投资.

从好的方面看,这个功能正在变化,现在是file a radar的好时机,并影响它的结果.

相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了...
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单...
开发者(KaiFaX) 面向开发者、程序员的专业平台! 和今年年初承诺的一样,苹果贴出了Swift语言的源码,...
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...