文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-11 22:33

关注

Swift运算符中的~=算不上出名,很多人并不清楚它是做什么的,该如何运用。简而言之,使用这个运算符,可以查看一个范围是否包含某个值。

本文将通过一些例子,带你了解这个运算符的用处和用法。开始吧!

考虑这样一种常见情况:在没有遇到任何错误的情况下,要启动网络请求并打出数据,因此要创建一个URLSessionDataTask,如下所示:

  1. let task = URLSession.shared.dataTask(with: URL(string: "https://google.com")!) { (data,response, error) in 
  2.                                   guardlet datadata = data, 
  3.                                       let responseresponse = response as? HTTPURLResponse, (200..<300) ~=response.statusCode else { 
  4.                                           iflet errorerror = error { 
  5.                                             print(error) 
  6.                                           } else { 
  7.                                              print("Somethingwent wrong") 
  8.                                           } 
  9.                                           return 
  10.                                   } 
  11.                                         print("Received data: \(data)") 
  12.                               } 

上述代码中就使用了~=,以检查状态码整数值是否在200到300之间(不包括两极),如果是,则结果是成功的。否则,将输出一条错误消息。

更改print语句并启动任务,实际上会得到有效响应,状态码是200:

  1. let task = URLSession.shared.dataTask(with: URL(string: "https://google.com")!) { (data,response, error) in 
  2.                                  guardlet datadata = data, 
  3.                                       let responseresponse = response as? HTTPURLResponse, (200..<300) ~=response.statusCode else { 
  4.                                           iflet errorerror = error { 
  5.                                             print(error) 
  6.                                           } else { 
  7.                                              print("Somethingwent wrong") 
  8.                                           } 
  9.                                           return 
  10.                                   } 
  11.                                         print("Received data: \(data), status code: \(response.statusCode)") 
  12.                               } 
  13.              task.resume() 

 

 

 

代码在一个Xcode Playground中运行

 

再来看看另一个在后台使用~=运算符的例子。假设有一个简单的Coordinate结构并将其实例化:

  1. structCoordinate { 
  2.               let value: (latitude:CLLocationDegrees, longitude: CLLocationDegrees) 
  3.           } 
  4.              let coordinate =Coordinate
  5.               value: ( 
  6.                   latitude: 40.7128, 
  7.                   longitude: 74.0060 
  8.               ) 
  9.           ) 

使用switch语句,查看这个坐标是否在纽约市的坐标范围内(该实例被简化):

  1. switch coordinate.value { 
  2.                case (40...41, 73...76): 
  3.                    print("Hmm... seems like we found NewYork City") 
  4.                default: 
  5.                    print("Unknown coordinates") 
  6.                } 

指定纬度值和经度值的范围。在后台,~=运算符使用==运算符将范围内的每个值与coordinate的值进行比较:

Swift鲜为人知的特性还有很多,比如值绑定模式、vDSP框架、CustomStringConvertible协议、类和静态的区别等等。这些概念你都明白嘛?如果不了解的话,赶快去查漏补缺吧。

 

来源:读芯术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯