Swift 中的命名空间:区分枚举和 class
Namespace in Swift: Differentiate between an enum and a class
我正在将一个名为 Fruits
的框架导入我的 class。 Fruits 有一个枚举 FruitType
,其中包含 case Banana
。 Fruits
框架还包含一个classBanana
。两者都是public.
enum FruitType {
case Banana
}
class Banana {
func eat() -> Bool { ... }
}
我现在的class
import Fruits
class ClassA {
function1() { (banana: Fruits.Banana) in {
return banana.eat()
}
}
func function1<T>(funcparam: (T) -> Bool) { }
}
该函数的确切细节并不重要,但我收到一条错误消息,指出 Banana 枚举没有函数 eat()。我如何区分枚举和 class,同时还要导入两者,因为我在不同的地方都需要它们。我也需要导入整个模块,这样我才能访问很多其他东西,所以我不能只做
import enum Fruits.FruitType
import class Fruits.Banana
虽然我知道这会解决具体的例子,但我还想导入 Fruits 的其余部分。
事实证明,您可以创建一个具有类型别名的文件
import class Fruits.Banana
typealias BananaClass = Fruits.Banana
然后在 ClassA
中使用 BananaClass
我建议在小写和大写名称方面遵循 Swift 标准:
- 你的
class
应该是 Banana(大写 B)
- 你的
enum
case
应该是banana(小写b)
这将有助于避免误解,并且可能有助于编译器。
我正在将一个名为 Fruits
的框架导入我的 class。 Fruits 有一个枚举 FruitType
,其中包含 case Banana
。 Fruits
框架还包含一个classBanana
。两者都是public.
enum FruitType {
case Banana
}
class Banana {
func eat() -> Bool { ... }
}
我现在的class
import Fruits
class ClassA {
function1() { (banana: Fruits.Banana) in {
return banana.eat()
}
}
func function1<T>(funcparam: (T) -> Bool) { }
}
该函数的确切细节并不重要,但我收到一条错误消息,指出 Banana 枚举没有函数 eat()。我如何区分枚举和 class,同时还要导入两者,因为我在不同的地方都需要它们。我也需要导入整个模块,这样我才能访问很多其他东西,所以我不能只做
import enum Fruits.FruitType
import class Fruits.Banana
虽然我知道这会解决具体的例子,但我还想导入 Fruits 的其余部分。
事实证明,您可以创建一个具有类型别名的文件
import class Fruits.Banana
typealias BananaClass = Fruits.Banana
然后在 ClassA
BananaClass
我建议在小写和大写名称方面遵循 Swift 标准:
- 你的
class
应该是 Banana(大写 B) - 你的
enum
case
应该是banana(小写b)
这将有助于避免误解,并且可能有助于编译器。