gpt4 book ai didi

Swift 枚举大小写声明语法

转载 作者:搜寻专家 更新时间:2023-11-01 07:27:00 25 4
gpt4 key购买 nike

我是 Swift 的新手。下面的代码来自“the swift programming language 2.1”。我注意到在为“enum Rank: Int”声明“case”时,这本书使用了

case Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten

我假设它等同于

case Two = 2,
case Three = 3,
....
case Ten = 10

我的假设是否正确?如果是,这是什么语法?还有其他什么情况可以使用吗?

struct BlackjackCard {
enum Suit: Character {
case Spades = "♠", Hearts = "♡", Diamonds = "♢", Clubs = "♣"
}

enum Rank: Int {
case Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King, Ace
struct Values {
let first: Int, second: Int?
}
var values: Values {
switch self {
case .Ace:
return Values(first: 1, second: 11)
case .Jack, .Queen, .King:
return Values(first: 10, second: nil)
default:
return Values(first: self.rawValue, second: nil)
}
}
}
let rank: Rank, suit: Suit
var description: String {
var output = "suit is \(suit.rawValue),"
output += " value is \(rank.values.first)"
if let second = rank.values.second {
output += " or \(second)"
}
return output
}
}

最佳答案

这称为“隐式分配的原始值”,您可以在 Swift Programming Language Guide 中阅读有关它的信息:

隐式分配的值可以是 IntString 类型,具体取决于枚举的声明方式。

如果枚举被声明为 Int 类型,则任何未显式分配的值都将“比前一种情况大一”。如果没有显式分配值,第一个枚举案例将获得值 0,然后是 1、2、3 等。

enum Foo: Int {
case Bar, Baz, Boz // values are 0, 1, 2 respectively
}

要显式访问“原始值”,您可以使用 Swift 提供的名为 rawValue 的枚举成员:

让 anInt = Foo.Bar.rawValue//anInt == 0

如果枚举是 String 类型,则该值被隐式分配给 case 的名称,因此:

enum Foo: String {
case Bar, Baz, Boz
}

具有“Bar”、“Baz”和“Boz”的原始值。

请注意,您可以通过在指定大小写的地方显式设置它们来覆盖这些值中的任何一个,例如:

enum Foo: String {
case Bar = "Something"
case Baz = "Something else"
case Boz // implicitly assigned "Boz"
}

在任何一种情况下,rawValue 都是这样获得的:

let aString = Foo.Bar.rawValue//"Something"

关于Swift 枚举大小写声明语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401603/

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