gpt4 book ai didi

swift - 比较 swift 中的枚举等级(Swift 书中的练习)

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:54 32 4
gpt4 key购买 nike

我刚开始学习编程,正在尝试完成 Swift 编程书中的实验。

它要求““编写一个函数,通过比较两个 Rank 值的原始值来比较它们。”

enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
default:
return String(self.toRaw())
}
}

我写了下面的函数

func compare(a:Rank,b:Rank) -> Bool{
return a.toRow() > b.toRow()}

我知道这是错误的,因为 toRow() 是 Rank 成员的函数。但是不知道Rank的成员数据类型是什么。

最佳答案

您的代码中有一个拼写错误,可能会阻止它正确编译。该方法是 toRaw 而不是 toRow

您更大的问题是“Rank 成员的数据类型是什么”。练习以下列方式声明 Rank:enum Rank: Int 因此类型为 Int。

不幸的是,The Swift Programming Language 中的措辞很容易让人忽视,但是在声明具有原始值成员的枚举和具有关联值(或没有值)。

这是书中原始枚举的示例:

enum ASCIIControlCharacter: Character { // note type declaration
case Tab = "\t"
case LineFeed = "\n"
case CarriageReturn = "\r"
}

关键是类型声明 : Character,它跟在 Enum 的名称之后。如果您尝试这样声明它:

enum ASCIIControlCharacter { // missing type declaration
case Tab = "\t" // won't work!
case LineFeed = "\n"
case CarriageReturn = "\r"
}

您将得到错误:如果枚举没有原始类型,则枚举大小写不能有原始值

因此每个成员的原始值类型必须与声明的枚举类型相匹配。

来源:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html#//apple_ref/doc/uid/TP40014097-CH12-XID_190

关于swift - 比较 swift 中的枚举等级(Swift 书中的练习),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536914/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com