2017-02-09 23 views
0

如何在Swift中存储用于评估操作符的函数的变量?Swift中操作符的转义关闭

Int.<也没有Int.`<`似乎为我编译。

字母数字函数名称,这工作得很好:

extension Comparable { 
    static func lessThan(_ lhs: Self, _ rhs: Self) -> Bool { 
     return lhs < rhs 
    } 
} 

let comparator = Int.lessThan 

我知道我可以创建一个新的闭包这样的,但我觉得必须有一个更优雅的方式:

let comparator: (Int, Int) -> Bool = { 
    return $0 < $1 
} 

请注意,<实际上是Swift 3中的Comparable的静态函数,顶级运算符<仅仅是这样一个包装:

public protocol Comparable : Equatable { 
    ... 
    public static func <(lhs: Self, rhs: Self) -> Bool 
    ... 
} 

回答

1

在方括号内它

let comparator: (Int, Int) -> Bool = (<) 
+0

谢谢,现在我觉得自己很蠢。 –

+0

@ChristianSchnorr不要:)这一点都不明显 – Alexander

+0

你知道是否有一种方法可以将它作为该类型的属性进行访问?我猜'(<)'是指顶层包装函数,而*不是* Int实际的静态方法。 –