作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个包含枚举的结构:
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)°"
}
}
}
当我尝试在代码的其他地方使用枚举时,编译器给我一个错误。该问题似乎与用于枚举的名称有关,因为当我重命名它时错误消失了。
枚举命名为类型的示例:
TemperatureUnit(type: TemperatureUnit.Type.Celsius) // Error
使用智能感知,TemperatureUnit 显示一个 Type 属性,该属性又具有一个 Type 属性 [...],并且这些 Type 属性都具有一个 Type 属性,不允许我访问我的实际枚举类型。
错误: 无法使用类型为“(类型:TemperatureUnit)”的参数列表为类型“TemperatureUnit”调用初始化程序
枚举名为 Kind 的工作示例:
TemperatureUnit(type: TemperatureUnit.Kind.Celsius)
有谁知道为什么名为 Type 的枚举不起作用?
编辑:
Type 是一个保留关键字,我们可以通过以下链接找到。 (Apple doc的信息在“关键字和标点符号”下)
最佳答案
Type
是 Swift 中的保留字。如果你想正确使用它,你需要在单词上使用反引号。所以声明你的枚举
public enum `Type` {
*stuff*
}
Kind 不是保留字,因此不会抛出错误。如果不正确转义保留字,则不能将其用作变量名。
关于swift - 找不到名为 Type 的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627744/
我是一名优秀的程序员,十分优秀!