当前位置: 首页 > 面试题库 >

与Void关联类型的通用Swift 4枚举

高祺
2023-03-14
问题内容

tl; dr

是否可以实例化具有类型关联值的通用Swift 4枚举成员Void

背景

我正在使用一个简单的 Result 枚举(类似于典型的Result):

enum Result<T> {
  case success(T)
  case error(Error?)
}

现在,我想使用这个枚举来表示操作的结果,该操作不会产生实际的结果值;该操作是 成功 还是 失败
。为此,我将类型定义Result<Void>,但是我在如何创建Result实例方面苦苦挣扎,这都let res: Result<Void> = .success不可行let res: Result<Void> = .success()


问题答案:

在Swift 3中,您可以省略type的关联值Void

let res: Result<Void> = .success()

在Swift 4中,您必须传递类型的关联值Void

let res: Result<Void> = .success(())
// Or just:
let res = Result.success(())


 类似资料:
  • 我想创建一个基于的颜色对象。我可以使用和获得相同的结果,我想知道其中一个是否比另一个更好。 使用: 它们在性能方面相等吗?有没有更好的kotlin方式达到同样的结果?

  • 枚举是为了让程序可读性更好,比如用来描述用户的角色,普通的会员、付费的会员等,同时也限定了用户角色的种类,保证安全性,不会出现上帝角色这种乱入的东西。 枚举的类别与写法 默认值从0开始,依次递增,这个你应该还记得。 普通的枚举 let str = 'something' enum test{ test01, } enum FileAccess { None, Read

  • 使用“关联类型”可以增强代码的可读性,其方式是移动内部类型到一个 trait 作为output(输出)类型。这个 trait 的定义的语法如下: // `A` 和 `B` 在 trait 里面通过`type` 关键字来定义。 // (注意:此处的 `type` 不同于用作别名时的 `type`)。 trait Contains { type A; type B; // 通常

  • 问题内容: 以前,我将LegNo枚举定义为: 通过调用,我可以获得与每个枚举关联的值。 但是现在我决定让枚举是int -1而不是0,所以我决定使用私有构造函数进行初始化并设置其int值 现在唯一的事情就是因为我这样做,所以该方法不适用于枚举。我如何获得与int相关联的枚举?除了使用case switch语句或if-elseif-elseif之外,还有其他有效的方法吗? 我可以看到很多与从枚举获取i

  • 以前,我将LegNo枚举简单定义为: 通过调用,我能够获得与每个枚举关联的值。 现在唯一的问题是,因为我是这样做的,方法将不能用于枚举。如何获得与int关联的枚举?除了使用case switch语句或if-elseif-elseif之外,是否还有其他有效的方法来完成此操作 我可以看到很多关于从枚举中获得int值的问题,但我想要的是相反的问题。

  • 关联类型 定义一个协议时, 有时在协议定义里声明一个或多个关联类型是很有用的. 关联类型给协议中用到的类型一个占位符名称. 直到采纳协议时, 才指定用于该关联类型的实际类型. 关联类型通过associatedtype关键字指定. 关联类型的应用 protocol Container { associatedtype ItemType mutating func append(_ i