我已阅读全文斯威夫特书 https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11,并观看了所有全球开发者大会视频 https://developer.apple.com/videos/wwdc/2014/(我衷心推荐所有这些)。我担心的一件事是数据封装。
考虑以下(完全是人为的)示例:
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 );
}
}
该类实现了一个堆栈,并使用数组来实现它。问题是,items
(就像 Swift 中的所有属性一样)是公共的,因此没有什么可以阻止任何人直接访问(甚至修改)它与公共 API 分开。作为一个脾气暴躁的老 C++ 人,这让我非常脾气暴躁。
我看到人们哀叹缺乏访问修饰符,虽然我同意他们会直接解决这个问题(而且我听到有传言说它们可能很快就会实现(TM)),但我想知道如果没有访问修饰符,数据隐藏的一些策略会是什么。
我是否错过了什么,或者这只是语言中的遗漏?
目前它只是失踪了。格雷格·帕克明确指出(在这个开发论坛主题中 https://devforums.apple.com/thread/227288)可见性修饰符即将到来。
鉴于没有标头,标准 Objective-C 技巧将不起作用,而且我想不出另一个不涉及大量向后弯曲的技巧来限制可见性。由于已经承诺了语言功能,我不确定它是否值得进行大笔投资。
自从这个功能以来,好的一面is不断变化,现在是一个很好的时机归档雷达 https://bugreport.apple.com并影响结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)