当前位置: 首页 > news >正文

网站什么做才会更吸引客户楚雄网站开发rewlkj

网站什么做才会更吸引客户,楚雄网站开发rewlkj,论坛企业推广,十大网络安全上市公司概览 小伙伴们都知道 Swift 是一门简洁、类型安全、极富表现力以及“性感迷人”的编程语言。 和大多数语言一样#xff0c;在 Swift 中也有一些隐藏着的、不为人知的宝藏特性。利用它们我们可以极大增加撸码的愉悦和成就感。 其中#xff0c;模式匹配#xff08;Pattern … 概览 小伙伴们都知道 Swift 是一门简洁、类型安全、极富表现力以及“性感迷人”的编程语言。 和大多数语言一样在 Swift 中也有一些隐藏着的、不为人知的宝藏特性。利用它们我们可以极大增加撸码的愉悦和成就感。 其中模式匹配Pattern Matching便是如此征服它我们的 Swift 开发技能又可以大步迈上一个新的台阶。 在本篇博文中您将学到以下内容 概览1. 什么是模式匹配2. 模式匹配符3. 模式匹配在 switch 语句中的应用4. 威力大增模式匹配重载总结 闲言少叙让我们马上开始模式匹配的探索之旅吧 Let’s Go 本篇博文对应的视频课欢迎小伙伴们恣意观赏 Swift趣味开发征服模式匹配Pattern Match 哔哩哔哩 bilibili 1. 什么是模式匹配 模式匹配是一种让我们可以更简洁更便利的比较、检查和解析数据的方式。 不光在 Swift 语言中模式匹配的概念在很多其它编程语言中都能大放异彩。 比如在下面 ruby 代码中我们通过模式匹配快速的检查了正则表达式是否匹配指定的字符串 irb(main):001:0 r /[a-z]at//[a-z]at/irb(main):002:0 r ~ xat0 irb(main):003:0 r ~ 11zat2 irb(main):004:0 r ~ 1atnil在 Swift 中的模式匹配与此类似不过它们特别适用于 switch 语句的语境中。 那么 switch 语句如何适配模式匹配呢答案是用模式匹配符。 2. 模式匹配符 在 Swift 语言中模式匹配符为 ~。在内置一些类型上它会退化为 操作符的行为 let string hello let power 11if string ~ hello, power ~ 11 {print(matched) } /* 输出结果为 matched */注意Swift 中匹配符~与 ruby 中~是正好反过来的。 我们可以为任意自定义类型做匹配模式的适配 struct Foo {static func ~(pattern: Double, value: Foo) - Bool {value.size pattern}var size CGFloat.zero }let foo Foo() if 0.0 ~ foo {print(matched!) } /* 输出结果为 matched! */这里有两点需要注意 匹配模式方法可以定义在类型外面若还要做“逆向”匹配则我们需要两个匹配方法 以下是演示代码 struct Foo {var size CGFloat.zero }func ~(pattern: Double, value: Foo) - Bool {value.size pattern }// 逆向匹配方法 func ~(value: Foo, pattern: CGFloat) - Bool {value.size pattern }let foo Foo() if 0.0 ~ foo {print(matched!) }// 逆向匹配 if foo ~ 0.0 {print(matched too!) } /*输出结果为: matched! matched too! */我们还可以对 Swift 标准库中的类型做扩展以支持匹配模式比如让正则表达式支持 ~ 操作符 let regex /[a-z]at/func ~(pattern: String, value: RegexSubstring) - Bool {let result try? pattern.firstMatch(of: value)return result ! nil }if 11xat ~ regex {print(matched!) } /*输出结果为: matched! */直接利用 ~ 匹配可以为我们开发带来一定便利不过更好的 idea 是将其嵌入到 switch 语句中以发挥最大威力。 3. 模式匹配在 switch 语句中的应用 在 Swift 中 switch 语句背后那个“默默无闻的男人”恰好就是模式匹配操作符。 struct Foo {var size CGFloat.zero }func ~(pattern: Double, value: Foo) - Bool {value.size pattern }对于上面已经抱上模式匹配大腿的 Foo 类型我们可以直接将其融入到 switch 语句中去 let foo Foo()switch(foo) { case 0:print(ZERO) case 5:print(FIVE) default:print(others) } /*输出结果 ZERO */4. 威力大增模式匹配重载 如果小伙伴们以为这就结束了那显然大家的格局还要再打开一些。 利用重载机制我们可以让自定义类型在 switch 语句中的模式匹配更加大放异彩。 比如如果除了直接比较 Foo#size 属性以外我们还想判断该属性的值是否在一个范围中这该如何是好呢 很简单我们对模式匹配符进行重载 func ~(pattern: ClosedRangeCGFloat, value: Foo) - Bool {pattern.contains(value.size) }有了上面的定义现在我们可以在同一个 switch 语句中用两种方式来匹配 Foo 对象的值了 let foo Foo(size: 11)switch(foo) { case 0:print(ZERO) case 5:print(FIVE) case 0...11:print(Bingooo!!!) default:print(others) }/* 输出结果为 Bingooo!!! */看到这里小伙伴们是否都已摩拳擦掌想在 Swift 中去尝试应用模式匹配更多的“奇思妙想”呢 勇敢去爱不畏将来不念过往。 放手去爱让爱如风般自由如光般璀璨。 所以勇敢的去吧The brave are invincible棒棒哒 总结 在本篇博文中我们讨论了在 Swift 中如何优雅的适配模式匹配并介绍了如何使用模式匹配操作符重载机制在 switch 语境中让开发“简约而简单”。 感谢观赏再会
http://www.w-s-a.com/news/191730/

相关文章:

  • 电商网站构建预算方案视频制作网站怎么做
  • 包装设计灵感网站ps软件下载电脑版多少钱
  • 手机网站图片做多大原网站开发新功能
  • 网站设计培训成都陕西网站建设公司哪有
  • expedia电子商务网站建设辽宁网站设计
  • 深圳网站建设网站运营绥芬河市建设局网站
  • 家政服务网站做推广有效果吗做图软件ps下载网站有哪些
  • 北京市建设教育协会网站flash网站制作单选框和复选框ui组件
  • 国外有没有做问卷调查的网站网站网页怎么做
  • 简单个人网站模板下载网站建设整体情况介绍
  • 网站建设做到哪些内容荆门网站建设电话咨询
  • 玉树网站建设公司双11主机 wordpress 2015
  • dw做网站背景图片设置汕头seo管理
  • 个人又什么办法做企业网站唐山哪里建轻轨和地铁
  • 手机网站404页面室内设计公司排名前100
  • 做民宿需要和多家网站合作吗创建软件的步骤
  • 网站导航栏设计要求辽宁省住房和城乡建设厅
  • 海外网站平台腾讯营销平台
  • 东道网站建设良品铺子网络营销案例
  • 免费企业查询软件优化模型
  • 兰亭集势的网站平台建设凡科网站免费版怎么做
  • 在网站做推广要钱吗网站根目录是哪个文件夹
  • 网站建设如何弄链接海外vps一键配置WordPress
  • 1个ip可以做几个网站吗动画制作可以自学吗
  • 顺德建设局网站如何搭建网站
  • 精品网站建设费用 干净磐石网络网页制作简单作业
  • 网站建设需要用软件群晖怎样做网站
  • 网站建设公司有哪博客网站建设方案书
  • 服装商城的网站建设宿迁论坛
  • 网站建设服务市场趋势淮南市网站开发的方式