gpt4 book ai didi

java - 如何像 Java 一样在 Swift 中使用构造函数实现枚举?

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:36 24 4
gpt4 key购买 nike

例如,我们有如下Java代码;

enum Job {
NINJA(3000000){
public void attack() {
//use Shuriken
}
},
SAMURAI(4000000){
public void attack() {
//use Sword
}
};
public final int salary;
public abstract void attack();
private Job(int salary) {
this.salary = salary;
}
}

在 Swift 中,我不认为我们可以定义构造函数并拥有任何枚举方法。

我发现我们可以在下面的 Swift 代码中有类似的结构,但不能有任何方法。

class Job {
class Store {
let salary : Int
init(int salary) {
self.salary = salary
}
}
class var NINJA: Store{
return Store(3000000)
}
class var SAMURAI: Store{
return Store(4000000)
}
}
// Job.NINJA.salary

当然,我知道 Swift enum 可以有自己的属性。

但是如果你在下面的例子中有更多的属性,我们必须在每个属性上有这么多的开关。我认为这并不聪明。

enum Job {
var salary: Int{
switch self{
case NINJA:
return 3000000
case SAMURAI:
return 4000000
}
}
case NINJA
case SAMURAI
}

那么,如果您是我,在这种情况下您将如何编写 Swift 代码?

最佳答案

在 swift 中使用 struct 的例子:

struct MyEnum {

static let TYPE1 = MyEnum(id: 1, text: "type 1")
static let TYPE2 = MyEnum(id: 2, text: "type 2")

let id: Int
let text : String

init(id:Int, text:String) {
self.id = id
self.text = text
}

func getId()->Int {
return id;
}

func getText() ->String {
return text;
}

static func values()->Array<MyEnum> {
return [TYPE1,TYPE2]
}

}

func == (left: MyEnum, right: MyEnum) -> Bool {
return left.id == right.id
}

使用示例:

for e in MyEnum.values() {
println(String(e.getId()) + " " + e.getText())
}

let type1 = MyEnum.TYPE1
if (type1==MyEnum.TYPE1) {
println("is Type 1")
} else {
println("is not Type 1")
}

控制台输出

1 type 1
2 type 2
is Type 1

关于java - 如何像 Java 一样在 Swift 中使用构造函数实现枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802171/

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