转换为变量中保存的类型

时间:2017-07-14 19:25:15

标签: swift casting

我试图将变量强制转换为变量中保存的其他类型,或者是函数的返回类型。这是一个想法:

let i = 1 as type(of: 3.14)

但是当我这样做时,我会遇到一些错误:

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

并发出警告:

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

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

2 个答案:

答案 0 :(得分:3)

Swift(当前)在编译时需要Type赋值。你可以做之类的事情,但是你需要为你想要使用的每种类型组合编写一个转换器,例如:

FloatConvertable

我会谨慎地沿着这条路走下去,并尝试习惯斯威夫特的做事方式。如果您绝对需要它,您应该能够使用一些通用函数和n=m;之类的协议来更简单地处理这个问题。

答案 1 :(得分:1)

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