gpt4 book ai didi

encapsulation - Swift 中的数据封装

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:49 26 4
gpt4 key购买 nike

我已经阅读了整个 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 );
}
}

这个类实现了一个堆栈,并使用数组来实现它。问题是,items(就像 Swift 中的所有属性一样)是公共(public)的,因此没有什么能阻止任何人直接访问(甚至改变)它与公共(public) API 分开。作为一个脾气暴躁的 C++ 老手,这让我非常暴躁。

我看到人们提示缺少访问修饰符,虽然我同意他们会直接解决这个问题(而且我听到谣言说他们可能很快就会实现 (TM)),但我想知道有哪些数据隐藏策略他们的缺席。

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

最佳答案

它现在只是失踪了。 Greg Parker 已明确声明 ( in this dev forums thread ) 即将推出可见性修改器。

鉴于没有 header ,标准的 Objective-C 技巧将不起作用,而且我想不出另一种不涉及大量向后弯曲的技巧来限制可见性。由于已 promise 语言功能,我不确定它是否值得任何大笔投资。

好的一面是,由于此功能 不断变化,现在是 file a radar 的好时机并影响结果。

关于encapsulation - Swift 中的数据封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com