如何有条件地将结构分配给变量?
How to conditionally assign a struct to a variable?
代码很容易解释。我试图让字典变量成为 3 个结构之一。我现在可能有一个简单的解决方案。
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary = ()
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
…
使用结构的实现如下:
struct CorrectLD10Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
struct CorrectLD15Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
struct CorrectLD35Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
protocol CorrectLDict {
var plusTenMinusTwoDic: [Double:Double] { get set }
var plusTenMinusOneDic: [Double:Double] { get set }
var plusTenZeroDic : [Double:Double] { get set }
var plusTenPlusOneDic : [Double:Double] { get set }
var plusTenPlusTwoDic : [Double:Double] { get set }
}
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary: CorrectLDict? = nil
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
guard let dictionary = dictionary else { return }
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
default:
print("")
}
}
使用 类 的实现如下:
class CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
class CorrectLD10Dict: CorrectLDict {}
class CorrectLD15Dict: CorrectLDict {}
class CorrectLD35Dict: CorrectLDict {}
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary: CorrectLDict? = nil
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
guard let dictionary = dictionary else { return }
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
default:
print("")
}
}
代码很容易解释。我试图让字典变量成为 3 个结构之一。我现在可能有一个简单的解决方案。
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary = ()
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
…
使用结构的实现如下:
struct CorrectLD10Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
struct CorrectLD15Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
struct CorrectLD35Dict: CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
protocol CorrectLDict {
var plusTenMinusTwoDic: [Double:Double] { get set }
var plusTenMinusOneDic: [Double:Double] { get set }
var plusTenZeroDic : [Double:Double] { get set }
var plusTenPlusOneDic : [Double:Double] { get set }
var plusTenPlusTwoDic : [Double:Double] { get set }
}
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary: CorrectLDict? = nil
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
guard let dictionary = dictionary else { return }
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
default:
print("")
}
}
使用 类 的实现如下:
class CorrectLDict {
var plusTenMinusTwoDic = [Double : Double]()
var plusTenMinusOneDic = [Double : Double]()
var plusTenZeroDic = [Double : Double]()
var plusTenPlusOneDic = [Double : Double]()
var plusTenPlusTwoDic = [Double : Double]()
}
class CorrectLD10Dict: CorrectLDict {}
class CorrectLD15Dict: CorrectLDict {}
class CorrectLD35Dict: CorrectLDict {}
func whichDictionaryToUse(flaps: Int, wind: Int) {
var dictionary: CorrectLDict? = nil
var possibleWindDictionaries = Set<[Double:Double]>()
switch flaps {
case 10: dictionary = CorrectLD10Dict()
case 15: dictionary = CorrectLD15Dict()
case 35: dictionary = CorrectLD35Dict()
default: print("Present alert saying flaps value out of range")
}
guard let dictionary = dictionary else { return }
switch wind {
case 10: possibleWindDictionaries = [dictionary.plusTenMinusTwoDic, dictionary.plusTenMinusOneDic, dictionary.plusTenZeroDic, dictionary.plusTenPlusOneDic, dictionary.plusTenPlusTwoDic]
default:
print("")
}
}