为什么需要解开此变量?

杰克斯
import SpriteKit

let NumOrientations: UInt32 = 4

enum Orientation: Int, Printable {
case Zero = 0, Ninety, OneEighty, TwoSeventy

var description: String {
    switch self {
        case .Zero:
            return "0"
        case .Ninety:
            return "90"
        case .OneEighty:
            return "180"
        case .TwoSeventy:
            return "270"
    }
}

static func random() -> Orientation {
    return Orientation(rawValue: Int(arc4random_uniform(NumOrientations)))!
}
}

我是新手,但是我有很多编程经验。但是,在Swift中处理未知数时,我从未遇到过像变量“包装”这样的东西。

我有静态函数random,它返回一个Orientation。关于Orientation类没有什么可选的。但是,我必须在随机函数的return语句上使用感叹号。

为什么是这样?请原谅我对速成知识的完全缺乏。

苏尔坦

好吧,显然初始化器可能会失败。假设:

Orientation(rawValue: 10)

这不会在您的枚举中找到值,那么您期望它返回什么?它将返回nil这意味着返回值必须是可选的,因为nil可以返回。

这是在明确提到斯威夫特语言指南枚举从原始值初始化

笔记

原始值初始化程序是一个失败的初始化程序,因为并非每个原始值都将返回枚举成员。有关更多信息,请参见失败的初始化程序。

但是,在这种情况下(方法random),您确定nil不会返回a,因此最好的解决方案是在从中返回可选参数之前先对其进行包装random

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这种解开参数行不通?

来自分类Dev

为什么此结构需要大小值?

来自分类Dev

为什么此委托变量为null?

来自分类Dev

为什么IF:无法正确评估此变量?

来自分类Dev

为什么不加载此变量?

来自分类Dev

为什么此变量未按预期计数?

来自分类Dev

为什么此代码需要Monad约束?

来自分类Dev

为什么这个变量需要是静态的?

来自分类Dev

为什么我不能继承此变量?

来自分类Dev

在Swift中进行声明时,为什么需要传递此结构的变量?

来自分类Dev

为什么条件变量需要锁(因此也需要互斥锁)

来自分类Dev

为什么ThreadLocal变量需要静态?

来自分类Dev

为什么隐式解开的可选内容需要在条件语句中再次解开?

来自分类Dev

为什么此变量的值不确定

来自分类Dev

为什么我需要“ \ $$(变量)”而不是“ $$(变量)”来获得“ $(变量)”?

来自分类Dev

为什么此验证使我始终需要?

来自分类Dev

为什么需要Content / Type变量?

来自分类Dev

为什么此变量超出范围?

来自分类Dev

为什么此变量创建UnboundLocalError?

来自分类Dev

为什么在php中需要此语句

来自分类Dev

为什么解开这么慢

来自分类Dev

为什么IF:无法正确评估此变量?

来自分类Dev

为什么此变量未按预期计数?

来自分类Dev

为什么此代码需要Monad约束?

来自分类Dev

为什么Local Inner类需要局部变量Final?此变量与Local Inner类定义的方法相同

来自分类Dev

为什么此变量的值会更改?

来自分类Dev

为什么需要使此方法异步?

来自分类Dev

为什么需要“设置变量”?

来自分类Dev

为什么在设置时不需要解开可选类型值?

Related 相关文章

热门标签

归档