将可选值添加到 [Any],得到编译器警告 - 从 Double 隐式强制表达式?去任何

Adding optional value to [Any], got compiler warning - expression implicitly coerced from Double? to Any

我目前正在学习 swift 中的类型 "Any" 并想出了以下代码

let optionalDouble: Double? = 45.1
let things: [Any] = [
    0,
    0.0,
    1.1,
    optionalDouble, //expression implicitly coerced from Double? to Any 
    -4.0,
    ("hello", 1),
    Movie(name: "Titanic", director: "James"),
    {(name: String) -> String in
        return "hello \(name)"
    },
    {},
    ["one": 1, "two": 2]
]

但是,当我尝试向 [Any] 数组添加一个可选的 Double 值时,swift 编译器显示一条警告说

//expression implicitly coerced from Double? to Any

我认为 Any 类型可以表示所有内容,而 [Any] 类型的数组可以包含所有内容。那么为什么会出现警告信息呢?

这只是一个警告。编译器想要确保你知道你在做一件奇怪的事情,将一个 Optional 包装在一个 Any 中。

在出现问题的行中,写入 optionalDouble as Any 以取消警告。