我想使用2常量,它们应该从函数的返回值初始化。我想在同一个文件中使用这两个常量 函数和常量也在同一个文件中。
class myclass{
static var ip :String
static var host :String
init(ip :String, host :String) {
let myconstant = self.setEnvVariables()
let ip = myconstant.0
let host = myconstant.1
}
internal func setVariables() -> (String , String){
let ip,host: String
if (some condition) != nil){
ip = "127.0.0.1"
host = "http://youraddress.com"
}
else{
ip = "10.12"
host = "http://myaddress.com"
}
return (ip,host)
}
答案 0 :(得分:0)
不确定我是否得到你想要的东西,但试试这个:
class MyClass {
static var ip: String!
static var host: String!
init() {
let (ip, host) = MyClass.setVariables()
MyClass.ip = ip
MyClass.host = host
}
private static func setVariables() -> (String , String) {
...
}
}
所有Swift全局变量/属性必须正确初始化。这意味着:
nil
作为其初始值(例如,上面的String!
)。或者,如果您不想在不需要时使用可选项(我不会!),您可以使用常量属性:
class MyClass {
private static let ipHost = MyClass.setVariables()
static let ip = ipHost.0
static let host = ipHost.1
}
第二个选项还改进了代码设计,因为您不再在实例初始化程序中初始化全局变量,这通常不是正确的方法。