找不到名为Type的Enum

时间:2015-06-03 18:19:37

标签: swift

我有一个包含枚举的结构:

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的信息在“关键字和标点符号”下)

1 个答案:

答案 0 :(得分:1)

Type是Swift中的保留字。如果你想正确使用它,你需要在单词上使用反引号。所以用

声明你的枚举
public enum `Type` {
    *stuff*
}

种类不是保留字,所以它不会抛出错误。如果没有正确转义它们,就不能使用保留字作为变量名。