Swift 中的命名空间:区分枚举和 class

Namespace in Swift: Differentiate between an enum and a class

我正在将一个名为 Fruits 的框架导入我的 class。 Fruits 有一个枚举 FruitType,其中包含 case BananaFruits框架还包含一个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)
  • 你的enumcase应该是banana(小写b)

这将有助于避免误解,并且可能有助于编译器。