Swift:如何对两个在 C 中是枚举常量的东西进行按位或运算?

Swift: How to bitwise OR two things that were enum constants in C?

设置

OS X 10.10.2
Xcode6.1

问题

这是一个愚蠢的 Swift 语法问题。在 Swift 中,你如何对两个在 C 中是枚举整数常量的东西(我收集它们是 Swift 中的 Int 进行按位或操作?

具体来说,这是我尝试做的事情在 C:

中的示例
CGGradientDrawingOptions opts = kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation;

当我在 Swift 中尝试此操作时:

let options: CGGradientDrawingOptions = kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation;

我得到这个编译时错误:

Cannot invoke '|' with an argument list of type '(Int, Int)'

我的语法错误是什么?我尝试了许多明显的变体,包括许多不同的 as 强制转换、包含和排除特定 CGGradientDrawingOptions 类型声明,但我找不到这个非常简单的操作的正确语法。

kCGGradientDrawsBeforeStartLocationkCGGradientDrawsAfterEndLocationInt,而 CGGradientDrawingOptionsUInt32

的别名

您必须将 Int 转换为 UInt32:

let options: CGGradientDrawingOptions = UInt32(kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation)

不过我觉得下面的更好

let options = CGGradientDrawingOptions(kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation)

添加:至于Xcode7/Swift2.0:

let options: CGGradientDrawingOptions = [.DrawsBeforeStartLocation, .DrawsAfterEndLocation]