Swift中的数据封装
发布时间:2020-12-14 05:38:53 所属栏目:百科 来源:网络整理
导读:我已经阅读了整个 Swift book,并观看了所有 WWDC videos(我衷心推荐所有这些).我担心的一件事是数据封装. 考虑以下(完全做作的)示例: class StackT{ var items : T[] = [] func push( newItem: T ) { items.insert( newItem,atIndex: 0 ) } func pop() - T?
我已经阅读了整个
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的好时机,并影响它的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |