zpa*_*ack 6 encapsulation swift
我已经阅读了整本Swift书,并观看了所有WWDC视频(我衷心推荐所有这些视频).我担心的一件事是数据封装.
考虑以下(完全做作的)示例:
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 );
}
}
Run Code Online (Sandbox Code Playgroud)
此类实现堆栈,并使用Array实现它.问题是items(像Swift中的所有属性一样)是公共的,因此没有任何东西阻止任何人直接访问(甚至变异)它与公共API分开.作为一个蹩脚的老C++家伙,这让我非常脾气暴躁.
我看到有人抱怨缺乏访问修饰符,虽然我同意他们会直接解决这个问题(我听说有传言说他们可能会实施Soon(TM)),但我想知道一些数据隐藏策略会在他们缺席时出现.
我错过了什么,或者这只是语言中的遗漏?
小智 6
目前它完全没有了.Greg Parker明确表示(在这个开发论坛帖子中)可见性修饰符即将到来.
鉴于没有标题,标准的Objective-C技巧将不起作用,我想不出另一个限制可见性的技巧,不会涉及大量向后弯曲.由于语言功能已被承诺,我不确定它是否值得任何大笔投资.
在光明的一面,因为这个功能是在不断变化,现在是一个伟大的时间来提交雷达和影响结果如何.
| 归档时间: |
|
| 查看次数: |
4803 次 |
| 最近记录: |