【问题标题】:Casting to a type held in a variable转换为变量中保存的类型
【发布时间】:2017-07-14 19:25:14
【问题描述】:

我正在尝试将变量转换为变量中保存的不同类型或函数的返回类型。这是一个想法:

let i = 1 as type(of: 3.14)

但是当我这样做时,我得到了几个错误:

  • 使用未声明的类型'type'
  • 一行中的连续语句必须用';'分隔(这会在type(of: 3.14) 之间插入一个分号)

还有一个警告:

  • (of: Double) 类型的表达式未使用

如何将值转换为保存在变量中的类型?

【问题讨论】:

  • 你的例子无论如何都行不通。无法将数字类型相互转换。

标签: swift casting


【解决方案1】:

Swift(当前)需要在编译时进行类型分配。你可以做一些事情这样,但你需要为你想使用的每种类型组合编写一个转换器,例如:

func convertType(from item: Int) -> Float {
    return Float(item)
}

var item: Float = convertType(from: 1)

我会谨慎走这条路,并尝试习惯 Swift 的做事方式。如果你绝对需要它,你应该能够使用一些通用函数和像FloatConvertable 这样的协议来更简单地处理这个问题。

【讨论】:

    【解决方案2】:

    Swift 语法不允许这些类型的表达式。 as 后面的表达式必须是类型的名称,即。 1 as Double(不过,正如 vadian 指出的那样,您不能将数字类型相互转换,所以更好的例子是 mySubClassObject as MySuperClass)。 Swift 是一种强类型语言,这意味着它需要在编译时知道所有变量的类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2015-06-06
      • 2011-07-03
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多