【发布时间】:2018-04-27 10:44:29
【问题描述】:
这是我的一段代码,
protocol Configuration {
static var url: String { get }
static var username: String { get }
static var password: String { get }
}
protocol Server {
associatedtype Profile: Configuration
associatedtype Payment: Configuration
associatedtype Images: Configuration
}
struct Development: Server {
struct Profile: Configuration {
static var url: String { return "http://google.com" }
static var username: String { return "abc" }
static var password: String { return "xyz" }
}
struct Payment: Configuration {
static var url: String { return "http://bing.com" }
static var username: String { return "abc" }
static var password: String { return "xyz" }
}
struct Images: Configuration {
static var url: String { return "http://duckduckgo.com" }
static var username: String { return "abc" }
static var password: String { return "xyz" }
}
}
struct Production: Server {
struct Profile: Configuration {
static var url: String { return "http://amazon.com" }
static var username: String { return "pqr" }
static var password: String { return "xyz" }
}
struct Payment: Configuration {
static var url: String { return "http://facebook.com" }
static var username: String { return "pqr" }
static var password: String { return "xyz" }
}
struct Images: Configuration {
static var url: String { return "http://orkut.com" }
static var username: String { return "pqr" }
static var password: String { return "xyz" }
}
}
问题是我想获取我的“结构”(取决于我的环境)。我需要类似的东西,
struct Environment {
static func current() -> Any:Server {
if #DEBUG
return Development
#endif
return Production
}
}
但是返回特定类型以确认我的协议是不可能的。
对此或不同方法的任何建议都会有所帮助。
【问题讨论】:
-
你想让 current() 返回结构类型吗?不是结构的实例?
-
@andlin 是的,那么只有我可以在其中使用静态属性,