当前位置: 首页 > 科技观察

鲜为人知的Swift特性:什么是~=运算符?

时间:2023-03-20 23:50:04 科技观察

本文转载自公众号《读芯》(ID:AI_Discovery)Swift运算符中的~=并不为人熟知,很多人不知道它是干什么用的。简而言之,使用此运算符,您可以检查一个范围是否包含某个值。本文将带您通过一些示例来了解此运算符的用处和用法。让我们开始吧!考虑启动网络请求并命中数据而没有遇到任何错误的常见情况,因此创建一个URLSessionDataTask,如下所示:lettask=URLSession.shared.dataTask(with:URL(string:"https://google.com")!){(data,response,error)inguardletdatadata=data,letresponseresponse=responseas?HTTPURLResponse,(200..<300)~=response.statusCodeelse{ifleterrorerror=error{print(error)}else{print("Somethingwentwrong")}返回}print("Receiveddata:\(data)")}~=在上面的代码中用来检查状态码的整数值是否在200到300之间(不包括极点),如果是则结果成功.否则,将输出错误消息。更改打印语句并启动任务实际上会产生状态代码为200的有效响应:lettask=URLSession.shared.dataTask(with:URL(string:"https://google.com")!){(data,response,error)inguardletdatadata=data,letresponseresponse=responseas?HTTPURLResponse,(200..<300)~=response.statusCodeelse{ifleterroerror=error{print(error)}else{print("Somethingwentwrong")}return}print("Receiveddata:\(data),statuscode:\(response.statusCode)")}在XcodePlayground中运行的task.resume()代码让我们看另一个在后台使用~=运算符的示例。假设你有一个简单的Coordinate结构并实例化它:structCoordinate{letvalue:(latitude:CLLocationDegrees,longitude:CLLocationDegrees)}letcoordinate=Coordinate(value:(latitude:40.7128,longitude:74.0060))使用switch语句查看坐标是否它在纽约市的坐标范围内(这个实例是简化的):switchcoordinate.value{case(40...41,73...76):print("Hmm...seemslikewefoundNewYorkCity")default:print("Unknowncoordinates")}指定纬度和经度值的范围。在幕后,~=运算符使用==运算符将范围内的每个值与坐标值进行比较:Swift有许多鲜为人知的特性,例如值绑定模式、vDSP框架、CustomStringConvertible协议、类和静态区别等等。你了解所有这些概念吗?如果您不了解它们,请赶快填补空白。