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] 删除。
我来说两句