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

时间:2017-01-31 04:02:48

标签: arrays swift swift3 any

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

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]
]

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

//expression implicitly coerced from Double? to Any

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

1 个答案:

答案 0 :(得分:1)

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

在发生问题的行中,写下optionalDouble as Any来取消警告。