我正在Swift中构建一个大类,我希望将其分布在多个文件中,因为它太大而无法有效地工作。它不能被子类化,因为它只是一个具有许多函数的类。 (我可能稍后可以优化它并删除双重代码,但我仍然希望实现这一点。)
为了更容易工作,我想使用Extensions将类扩展到多个Swift文件中。我已经部分实现了它;通过在同一文件中创建扩展来扩展基类。这没有任何问题。
让我们说基本文件是 BaseClass.Swift (以及类 BaseClass ),我想将它扩展到 BaseClassExtension.swift ,我将以下内容放在 BaseClassExtension.swift :
中extension BaseClass {
func doStuff() -> String {
return myVariable
}
}
在 BaseClass.swift 中我有private var myVariable = "I am a string"
,但在 BaseClassExtension.swift 中我收到以下错误:使用未解析的标识符'myVariable'
我尝试了以下事项:
当我从private
删除myVariable
时,错误已解决,但我真的希望它是私有的,因为它可能永远不会直接从类外部访问。
答案 0 :(得分:4)
您必须在与您的类相同的文件中进行扩展,因为private只限于此文件。
但是你可以这样做:
private(set) myVariable: String
因此可以从您的扩展程序访问getter,但(至少)setter仍然隐藏在此范围内。