在 Swift 的函数中使用 Struct 作为参数
Use Struct as a parameter in a function in Swift
我有下一个场景:
我创建了一个 Swift package
并在 main application
中使用。在这个 Swift Package
中,我想使用一些颜色,因为它是一个 UI package
。我的 struct Colors
已经是 defined in my main application
,我不想在 package
中再次定义它,所以我试图将我的 struct Colors
发送到 package
。
我的 struct Colors
里面还有另一个 struct General
,比如:
struct Colors {
struct General {
static let mainColor = "5F8E3F".toColor
}
}
这就是我在 package
:
中的称呼
func setupContent(withMainStruct mainStruct: Colors) {
print(mainStruct.General.mainColor)
}
这是我从 main application
:
发送的方式
let mainStruct = ColorStruct()
cell.setupContent(withMainStruct: mainStruct)
我的主要问题是:
Static member 'General' cannot be used on instance of type 'Colors'
有什么办法吗?
我只想使用结构的值,不需要更新任何内容。
听起来你想在你的包中定义一个协议,它由你的应用程序中的一个结构来实现。因此,您只需将这些预定义值提供给包即可。
所以像这样。
在应用程序中:
struct AppColors: Colors {
let general: GeneralColors = General()
struct General: GeneralColors {
let mainColor = UIColor.blue
}
}
configLib(colors: AppColors())
包内
protocol Colors {
var general: GeneralColors { get }
}
protocol GeneralColors {
var mainColor: UIColor { get }
}
func configLib(colors: Colors) {
print(colors.general.mainColor)
}
我有下一个场景:
我创建了一个 Swift package
并在 main application
中使用。在这个 Swift Package
中,我想使用一些颜色,因为它是一个 UI package
。我的 struct Colors
已经是 defined in my main application
,我不想在 package
中再次定义它,所以我试图将我的 struct Colors
发送到 package
。
我的 struct Colors
里面还有另一个 struct General
,比如:
struct Colors {
struct General {
static let mainColor = "5F8E3F".toColor
}
}
这就是我在 package
:
func setupContent(withMainStruct mainStruct: Colors) {
print(mainStruct.General.mainColor)
}
这是我从 main application
:
let mainStruct = ColorStruct()
cell.setupContent(withMainStruct: mainStruct)
我的主要问题是:
Static member 'General' cannot be used on instance of type 'Colors'
有什么办法吗?
我只想使用结构的值,不需要更新任何内容。
听起来你想在你的包中定义一个协议,它由你的应用程序中的一个结构来实现。因此,您只需将这些预定义值提供给包即可。
所以像这样。
在应用程序中:
struct AppColors: Colors {
let general: GeneralColors = General()
struct General: GeneralColors {
let mainColor = UIColor.blue
}
}
configLib(colors: AppColors())
包内
protocol Colors {
var general: GeneralColors { get }
}
protocol GeneralColors {
var mainColor: UIColor { get }
}
func configLib(colors: Colors) {
print(colors.general.mainColor)
}