gpt4 book ai didi

Swift 继承嵌套/内部枚举问题

转载 作者:行者123 更新时间:2023-11-28 07:01:15 25 4
gpt4 key购买 nike

我正从 java/C++/C# 转向 Swift。我有以下问题:

class A {

struct Fields{
static let valA = "A";
}
}

class B: A {

struct Fields{
static let valB = "B";
static let valD = "D";
}
}

var b: B = B()
println("\(B.Fields.valB)")

编译器提示“类 A.Fields.Type 没有名为“valB”的成员。

我需要在两个类上保持相同的枚举名称(eq.Fields)。

谢谢,

最佳答案

不是结构,而是类

class A {

class Fields{
static let valA = "A";
}
}

class B: A { //<--Doesn't have to extend A

class Fields : A.Fields{
static let valB = "B";
static let valD = "D";
}
}


println(B.Fields.valA)//A
println(B.Fields.valB)//B
println(B.Fields.valD)//D

编辑:为什么是类而不是结构?结构不能被继承

struct A{
var a : Int?;
}

struct B :A{
var b : Int;
}

这会产生编译错误

Inheritance from non-protocol type 'A'

只有类可以继承,也只有类可以扩展其他类。这段代码也会产生编译错误:

class A{
var e : Int?;
}

struct B :A{
var t : Int;
}

Non-class type 'B' cannot inherit from class 'A'

不要忘记结构体来自C语言,它不是面向对象的。

关于Swift 继承嵌套/内部枚举问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990468/

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