我有一个包含枚举的结构:
public struct TemperatureUnit : Unit
{
public enum Type
{
case Celsius
case Fahrenheit
}
public var type:Type
public init(type:Type)
{
self.type = type
}
public func getFormattedStringForValue(value:Int) -> String
{
if (self.type == .Celsius)
{
return "\(value) °C"
}
else
{
return "\(value)°"
}
}
}
当我尝试在代码中的其他地方使用枚举时,编译器会给我一个错误。这个问题似乎与用于枚举的名称有关,因为当我重命名它时错误会消失。
枚举命名为Type:
的示例TemperatureUnit(type: TemperatureUnit.Type.Celsius) // Error
使用intelliSense,TemperatureUnit显示一个Type属性,该属性又具有Type属性[...],并且这些Type属性都具有Type属性,不允许我访问我的实际枚举类型。
错误: 无法使用类型为'(type:TemperatureUnit)'的参数列表调用类型'TemperatureUnit'的初始化程序
使用枚举命名为Kind的工作示例:
TemperatureUnit(type: TemperatureUnit.Kind.Celsius)
有谁知道为什么名为Type的枚举不起作用?
修改
类型是保留关键字,我们可以通过以下链接找到。 (Apple doc的信息在“关键字和标点符号”下)
答案 0 :(得分:1)
Type
是Swift中的保留字。如果你想正确使用它,你需要在单词上使用反引号。所以用
public enum `Type` {
*stuff*
}
种类不是保留字,所以它不会抛出错误。如果没有正确转义它们,就不能使用保留字作为变量名。