面试题答案
一键面试实现思路
- 使用
Mirror
来反射数组,获取数组的元素。 - 通过
type(of:)
获取元素的实际类型,根据不同类型执行不同操作。
具体实现代码
let mixedArray: [Any] = [1, "Hello", 3.14, true]
for element in mixedArray {
let mirror = Mirror(reflecting: element)
switch mirror.displayStyle {
case.some(.collection):
print("这是一个集合类型")
case.some(.optional):
print("这是一个可选类型")
default:
let type = type(of: element)
if type == Int.self {
let intValue = element as! Int
print("这是一个整数: \(intValue)")
} else if type == String.self {
let stringValue = element as! String
print("这是一个字符串: \(stringValue)")
} else if type == Double.self {
let doubleValue = element as! Double
print("这是一个双精度浮点数: \(doubleValue)")
} else if type == Bool.self {
let boolValue = element as! Bool
print("这是一个布尔值: \(boolValue)")
} else {
print("未知类型: \(type)")
}
}
}
上述代码中,首先定义了一个包含不同类型元素的数组mixedArray
。然后通过for - in
循环遍历数组,对于每个元素,利用Mirror
反射获取其显示风格,根据不同的显示风格进行一些通用处理,再通过type(of:)
获取具体类型并进行特定类型的操作。例如,如果是Int
类型,就转换为Int
并打印;如果是String
类型,就转换为String
并打印等。