Я бы хотел (статически) определить глобальный Swift typealias
в соответствии с аргументами запуска.Определение быстрых типов в соответствии с аргументами запуска
Swift позволяет мне сделать это с константами:
protocol Client {
}
struct FakeAPIClient: Client {
}
struct ProductionAPIClient: Client {
}
private var isUITesting: Bool {
return NSProcessInfo.processInfo().arguments.contains("UI-TESTING")
}
let APIClient: Client.Type = isUITesting ? FakeAPIClient.self : ProductionAPIClient.self
Как я могу достичь того же с typealiases? Я хотел бы сделать что-то вроде:
struct FakeAPIClient {
}
struct ProductionAPIClient {
}
private var isUITesting: Bool {
return NSProcessInfo.processInfo().arguments.contains("UI-TESTING")
}
typealias Client = isUITesting ? FakeAPIClient : ProductionAPIClient
Но это не скомпилировано. Есть ли способ достичь этого?
Разве вы не описываете общий? Конечно, детали будут зависеть от того, что вы хотите _do_ с этим динамически разрешенным типом. – matt
просто вызывают статические методы, общие для 'ProductionAPIClient' и' FakeAPIClient'. может ли это быть сделано только с дженериками? – Eric
У вас не может быть «статических» вещей, определенных во время выполнения. «Статический» означает, что он определен во время компиляции. В этом разница между статикой и динамикой. –