"模式匹配" operator~ = cause"二元运算符'〜='不能是操作数" Swift

时间:2016-05-17 18:26:00

标签: ios swift

我正在尝试Swift新运算符~=,但遇到了一个奇怪的错误。

var filteredNumbers1 = [20,30,50,15].filter({15...30 ~= $0})

按预期工作。

var filteredNumbers2 = [20,30,50,15].filter({$0 ~= 15...30})

引发错误

  

二元运算符'〜='不能应用于' int'类型的操作数和'范围< Int>'

我想知道15...30 ~= $0$0 ~= 15...30之间有什么区别?

1 个答案:

答案 0 :(得分:4)

Swift标准库中的

~=被定义为期望左侧的模式和右侧的值。声明是:

public func ~=<I : ForwardIndexType where I : Comparable>(pattern: Range<I>, value: I) -> Bool

如果您愿意,可以添加自己的左侧支持值和右侧范围的版本:

func ~=<I : ForwardIndexType where I : Comparable>(value: I, pattern: Range<I>) -> Bool {
    return pattern ~= value
}