代码之家  ›  专栏  ›  技术社区  ›  Krumelur

为什么在使用文字时swift会推断双值?

  •  2
  • Krumelur  · 技术社区  · 6 年前

    我知道swift对类型非常严格,并且不会隐式地将一种类型转换为另一种类型。

    为什么这不会产生错误,而输出是一个双精度数组?

    let myDoubles = [Double.Pi, 42]
    

    但这是吗?

    let fortyTwoInt = 42;
    let myDoubles = [Double.Pi, one]
    

    为什么它在第一个示例中隐式地将42转换为42.0如果不是演员,还会发生什么?

    更简单的例子:

    let someFloat = 2.0 + 2
    

    let twoInt = 2
    let someFloat = 2.0 + twoInt
    

    再说一次,后者不起作用。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Rob Napier    6 年前

    “演员”这个词在这里不太合适。它将字符序列“4”和“2”解释为整数文本。 Double 符合 ExpressibleByIntegerLiteral ,所以 双倍 可以从中构造。

    fortyTwoInt 不是整数文本。这是一个 Int . swift不会自动转换为 内景 双倍 是的。