swift – 逻辑运算符的类型是什么?

前端之家收集整理的这篇文章主要介绍了swift – 逻辑运算符的类型是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将它们用作我的Region结构的方法的参数:
private func combineWith(region: RegionProtocol,combine: (Bool,Bool) -> Bool) -> Region {
    return Region() {point in
        combine(self.contains(point),region.contains(point))
    }
}

但显然,(Bool,Bool) – > Bool)不是什么&&或||是.如果您知道,请告诉我您是如何发现的.

如果你在语句中“cmd-click”单词“Swift”
import Swift

在Xcode中搜索||然后你会发现它被声明为

func ||<T : BooleanType>(lhs: T,rhs: @autoclosure () -> Bool) -> Bool

原因是||的“短路”行为operator:如果是第一个
操作数为true,则根本不能评估第二个操作数.

所以你必须将参数声明为

combine: (Bool,@autoclosure () -> Bool) -> Bool

例:

func combineWith(a : Bool,b : Bool,@autoclosure () -> Bool) -> Bool) -> Bool {
    return combine(a,b)
}

let result = combineWith(false,true,||)
println(result)

注意:我使用Xcode 6.1.1进行了测试. autoclosure的语法
Swift 1.2(Xcode 6.3)中的参数已更改,我还没有
为Swift 1.2翻译上面的代码(另见Rob的评论
下面).

我现在唯一可以提供的东西非常难看
解决方法.你可以包装||进入一个没有的封闭
autoclosure参数:

func combineWith(a : Bool,() -> Bool) -> Bool) -> Bool {
    return combine(a,{ b })
}

let result = combineWith(false,{ $0 || $1() } )

或者你没有短路行为:

func combineWith(a : Bool,Bool) -> Bool) -> Bool {
    return combine(a,{ $0 || $1 } )
原文链接:https://www.f2er.com/swift/319567.html

猜你在找的Swift相关文章