OS X 10.10.2
Xcode 6.1
这是一个愚蠢的Swift语法问题。在Swift中,你如何按比例或两个东西(我收集它们在Swift中是Int
s)在C中枚举整数常量?
具体来说,这是我尝试做的一个例子在C中会是这样的:
CGGradientDrawingOptions opts = kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation;
当我在Swift中尝试这个时:
let options: CGGradientDrawingOptions = kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation;
我得到了这个编译时错误:
Cannot invoke '|' with an argument list of type '(Int, Int)'
这里的语法错误是什么?我尝试了许多明显的变体,包括许多不同的as
强制转换,包含和排除特定的CGGradientDrawingOptions
类型的decl,但我找不到这个非常简单的操作的正确语法。
答案 0 :(得分:7)
kCGGradientDrawsBeforeStartLocation
和kCGGradientDrawsAfterEndLocation
为Int
,而CGGradientDrawingOptions
为UInt32
的别名
您必须将Int
转换为UInt32
:
let options: CGGradientDrawingOptions = UInt32(kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation)
但我认为以下情况更好。
let options = CGGradientDrawingOptions(kCGGradientDrawsBeforeStartLocation|kCGGradientDrawsAfterEndLocation)
ADDED:至于Xcode7 / Swift2.0:
let options: CGGradientDrawingOptions = [.DrawsBeforeStartLocation, .DrawsAfterEndLocation]