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

个人网站特点企业宣传片文案模板

个人网站特点,企业宣传片文案模板,月光博客 wordpress,内蒙古网站建设云聚概述 苹果在去年 WWDC 23 中就为 Swift 语言新增了“其利断金”的重要小伙伴 Swift 宏#xff08;Swift Macro#xff09;。为此#xff0c;苹果特地用 2 段视频#xff08;入门和进阶#xff09;颇为隆重的介绍了它。 那么到底 Swift 宏是什么#xff1f;有什么用… 概述 苹果在去年 WWDC 23 中就为 Swift 语言新增了“其利断金”的重要小伙伴 Swift 宏Swift Macro。为此苹果特地用 2 段视频入门和进阶颇为隆重的介绍了它。 那么到底 Swift 宏是什么有什么用它和 C/C 语言中的宏又有什么异同呢本系列博文将会尝试为小伙伴们揭开 Swift 宏的神秘面纱。 在本篇博文中您将学到如下内容 概述1. 从一个”尴尬“的小例子聊起2. 什么是 Swift 宏它与其它语言中的宏有何不同总结 相信学完本系列博文后Swift Macro 会从大家心中的“阳春白雪”变为“阳阿薤露”小伙伴们必可以将它们运用的“如臂使指”。 那还等什么呢Let‘s go 1. 从一个”尴尬“的小例子聊起 其实早在去年苹果祭出 Swift 5.9 时Swift 语言本身就已经加入了超多先进和现代化的特性。 自从今年 Swift 大版本进化到 6 之后几乎所有秃头码农们都不约而同的认为 Swift 不仅已经前所未有地成熟和稳定而且它的能力也变得史无前例的强大。真可谓“多平台台台出彩多系统统统有戏”貌似 Swift 已经变得“登峰造极”、“气吞山河”了。 果真如此吗 更多关于 Swift 5.9 和 Swift 6.0 语言的全方位介绍请小伙伴们移步我的《Swift 语言开发精讲》专栏和苹果 WWDC 24 官方站点观赏精彩的文章和视频 《Swift 语言开发精讲》  WWDC 2024 咱先别把话说满虽说 Swift 现今已足够强大但它真的是无所不能丝毫不存在所谓的“阿格硫斯之踵”吗 答案是否定的下面我们就举一个小“栗子”让看似强大的 Swift “一秒破功”。 假设我们要实现一个很简单的功能按类型实例的属性排序。 struct Item {let name: Stringlet nickname: String?let age: Intlet power: Double }在上面的 Item 中存在若干属性我们希望写一个通用的排序方法对 Item 集合排序 struct Model {let items: [Item]func sortItemsByValue: Comparable(keyPath: KeyPathItem, Value, sortOrder: SortOrder .forward) throws - [Item] {items.sorted(using: SortDescriptor(keyPath, order: sortOrder))} }如上代码所示我们在模型 Model 中创建了一个 sortItemsBy() 方法按 Item 中任意属性来排序 [Item] 数组。 比如我们可以分别依据 Item 的 name 和 age 属性来生成不同排序后的数组 let model Model(items: []) let itemsByName try! model.sortItemsBy(keyPath: \.name) let itemsByAge try! model.sortItemsBy(keyPath: \.age, sortOrder: .reverse)这样很好很强大不过目前排序功能有点小问题就是我们无法排序类型为可选值的属性 let itmesByNickname try! model.sortItemsBy(keyPath: \.nickname)如您所见当我们试图按 nickname 属性排序 Item 数组时编译器就会大声抱怨。原因前面已经说了因为 nickname 属性的类型是 String?即 OptionalString 对此我们可以提出相应的解决方法即另外写一个可选Optional参数版本的排序方法 func sortItemsByValue: Comparable(keyPath: KeyPathItem, Value?, sortOrder: SortOrder .forward) throws - [Item] {items.sorted(using: SortDescriptor(keyPath, order: sortOrder)) }这个方法与之前的几乎一毛一样唯一不同之处在于 KeyPath 的 Value 是可选类型。 现在我们就有点“哭笑不得”了对于排序功能我们竟然要写两个方法即使它们几乎如出一辙。 当然对于这样简单的排序功能我们完全可以想办法“剥离”外部的方法而直接使用 [Item] 上的 sorted() 方法。 有的小伙伴们可能会想出下面这种“左右逢源”的排序实现 func sortItemByValue: Comparable(keyPath1: KeyPathItem, Value?, keyPath2: KeyPathItem, Value??, sortOrder: SortOrder .forward) throws - [Item] {if let keyPath1 {items.sorted(using: SortDescriptor(keyPath1, order: sortOrder))} else if let keyPath2 {items.sorted(using: SortDescriptor(keyPath2, order: sortOrder))} else {throw MyError(至少要有一个 KeyPath 不为 nil)} }但是这样一来我们仍然在方法内部造成了代码重复并且整体实现根本毫无优雅性可言。 与此类似的场景在偏静态的 Swift 语言中绝对会让我们心余力绌坐如针毡。这就是 Swift 缺乏的能力用代码生成代码 一般来说我们有两种办法来解决此事 在运行时动态生成代码ruby 和 Python 就非常精于此道所以 ruby 和 Python 之类的语言根本不需要所谓的宏由编译器预处理器当家做主在编译前生成代码C/C 宏的强项 将来有没有暂且不说目前 Swift 还没有 ruby 和 Python 那种运行时动态“造码”的能力。不过从 WWDC 23 那年开始苹果推出了 Swift 宏专注于在编译时静态“造码”。 我们的最终目标是实现下面这个 nilable 宏它可以生成对应版本的 KeyPathRoot, Value? 排序方法 看我们如何在这一共 5 篇系列博文中步步为营最后铁杵成针的吧 2. 什么是 Swift 宏它与其它语言中的宏有何不同 在官方的开发文档中苹果就为 Macro 的特性定了基调在编译时生成代码。 具体来说Swift Macro 在编译时可以根据现有代码转换或生成新代码这样做的最大好处就是避免重复DRY Swift 编译器会在我们的逻辑代码编译前将其中的任何宏展开Expands。Swift 宏有两个重要的特性 它绝不会删除已存在的代码它绝不会修改其它已存在的代码 其实在 WWDC 23 之前苹果就已经在代码中使用过海量的特殊宏从最常见的 #function、#file、#error 宏到 main 、available、discardableResult 宏等等。我感觉在 WWDC 23 之前的某个时刻苹果一定就有把这些特殊宏升级为通用宏的壮志凌云。 关于 Swift 宏的详细文档大家可以到苹果官方开发站点一窥究竟  Swift Macros 虽然都是“宏字辈”但是 Swift 中的宏还是与 C/C 等语言中的宏有些区别的 Swift 中的宏完全参与到 Swift 的类型系统中可以在编译时保证类型安全苹果确保宏的展开过程是一个沙箱Sandbox操作不会带来安全漏洞或泄露系统中用户的隐私在宏展开发生错误时Swift Macros 提供了更多的机制来帮助用户快速了解错误原因和解决办法我们可以为宏编写单元测试增强它的鲁棒性 因为 C/C 中的宏只是一个简单的字符串字面值替换器所以无论是用户编写和编译器支持起来都不算太难但是 Swift 的宏就完全是另一回事了。 想要系统学习 Swift 的小伙伴们欢迎来我的 《Swift语言开发精讲》专栏逛一逛哦。 《Swift 语言开发精讲》 在了解了 Swift 宏之后在下一篇博文中我们就来看看它能做些什么以及不要用它们做什么 总结 在本篇博文中我们讨论了 Swift 宏的基本概念以及它与 C/C 语言中的宏有何不同。 感谢观赏我们下一篇见
http://www.lakalapos1.cn/news/35842/

相关文章:

  • 网站建设制作设计seo优化珠海合肥中小企业网站制作
  • 湖南奉天建设集团网站mvc网站开发
  • 百度网站优化培训最近新闻事件
  • 企业网站定制开发一条龙全包做本地网站能做吗
  • 高端网站建设策划网站关键词检测
  • 株洲定制网站建设廊坊公司做网站
  • 平湖网站改版搜索引擎排名的三大指标
  • 网站seo在线诊断做网站后期费用
  • 网站活跃度怎么做电子商务平台网站推广
  • 东莞哪里有做网站的关于网站建设交易流程的描述一句话
  • 刷网站排名 优帮云游戏推广员拉人技巧
  • 国外服装网站重庆网站维护制作
  • 长沙的互联网网站公司建设网站公司东莞
  • 网站建设与网页设计的区别ppth5怎么制作
  • 有什么可以做cad赚钱的网站北塘网站制作
  • 建设网站的企业专业服务微信软文是什么意思
  • 建设类似衣联网的网站怎么找做网站的人
  • 哪里做网站的比较多dw网页制作教程ppt
  • 建网站 备案北京专业制作网站公司吗
  • 宝塔建设网站教程中国广告公司100强
  • 天津学网站建设微信电子宣传册制作app
  • 怎么样建立学校网站站外推广
  • 展厅网站做互联网平台要多少钱
  • 上海建设银行青浦分行网站建设信用卡激活中心网站
  • 哈尔滨站建站时间flash 网站 源码
  • 网站备案被恶意注销个人简历自我评价
  • 网站跳出率如何计算网站服务器维护工具
  • 网站开发配置大气的网站设计
  • 家电企业网站推广方案网站开发是做什么?
  • 用vs2010做购物网站廊坊网站建设