gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:16:47 27 4
gpt4 key购买 nike

设置

OS X 10.10.2
Xcode 6.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]

关于c - Swift:如何对两个在 C 中是枚举常量的东西进行按位或运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com