如何创建一个数组或字典,其值只能是String,Int和Boolean?

时间:2017-03-28 06:17:42

标签: arrays swift dictionary

我需要创建一个数组,其值只能是String,Int或boolean。 如果我尝试添加Double或任何其他值类型,Swift编译器应该抱怨。

2 个答案:

答案 0 :(得分:16)

protocol Elem {} 
extension Int: Elem {}  
extension String: Elem {} 
extension Bool: Elem {} 
let arr = [Elem]()

答案 1 :(得分:8)

您可以通过声明虚拟协议

来实现
protocol SpecialType {}

并让所请求的类型符合该协议

extension String : SpecialType{}
extension Int : SpecialType{}
extension Bool : SpecialType{}

现在,如果您尝试添加Double

,编译器会抱怨
let specialDict : [String:SpecialType] = ["1" : "Hello", "2": true, "3": 2.0]
// value of type 'Double' does not conform to expected dictionary value type 'SpecialType'