苹果开源 ArgumentParser:为 Swift 加个工具?

作为苹果四年磨一剑的产物,Swift 绝不仅仅为了替换 Object-C,Swift 寄托了苹果宏大的愿景。而最近,苹果开源 ArgumentParser,为 Swift 再加一把趁手的“兵器”。

苹果开源 ArgumentParser

近日,苹果 Swift 标准库团队的 Nate Cook 在 Swift 官网上宣布 ArgumentParser 库正式开源。它由 Swift 实现,用于解析命令行参数(command-line arguments),具有直观、易用、简洁、安全的特点,是一个很出色的解析器。Nate Cook 表示,用 ArgumentParser 解析 Swift 中的命令行参数时会轻松很多。
在 GitHub 上,ArgumentParser 的 star 数已经近一千。苹果还推荐了两个 ArgumentParser 在 Swift 项目工具中采用的示例:

  • indexstore-db:一个包含两个命令的简单实用程序。
  • swift-format:使用了一些高级功能,例如自定义选项值和隐藏标志。

使用

文章中通过四个简单的操作来介绍 ArgumentParser 如何使用:

  1. 如何生成一个介于 1 和 highValue 之间的随机数;
  2. 如何进行自定义验证,以及出现错误时会在屏幕上出现提示信息;
  3. 如何实现在 ArgumentParser 中使用子命令;
  4. 以及如何填加第二个子命令。

这四个操作的代码共计不到 50 行,它会自动检测用户给出的子命令,解析该子命令的参数,然后调用其对应方法。如果用户没有给出子命令,会按默认的命令调用其对应方法。除此之外,ArgumentParser 还支持很多其他功能。了解更多信息: https://github.com/apple/swift-argument-parser

Nate Cook 还提到,在短期内会将一些常用的附加功能添加进去,以确保 SwiftPM 在采用 ArgumentParser 时不会出现功能不全的情况。在 SwiftPM 完全采用 ArgumentParser 后,Swift 标准库团队将会在 Swift 编译器驱动程序中采用该库。
在 ArgumentParser 库之前,SwiftPM 中有一个 TSCUtility 库,该库中就包含一个参数解析器,不过苹果并没有让 TSCUtility 库“发扬光大”的打算。所以,苹果开源了 ArgumentParser,并打算在未来的发展与迭代中让其可以在整个 Swift 项目中被采用。

雄心勃勃的 Swift

苹果官方曾说过:“Swift 的目标是,既可以写应用程序,也能写操作系统。”
众所周知,Swift 是苹果在 2014 年全球开发者大会(WWDC)上发布的编程语言,并于 2015 年正式开源。虽然发布时间不算长,但 Swift 的普及程度却超出了很多人的预期,在最新的 2 月份 TIOBE 编程语言排行榜中,Swift 排名第十,而前面都是发布至今十余年甚至是几十年的“老大哥”,Swift 集成了现代语言的很多特点:高级结构、闭包、泛型等等,也正因如此,Swift 成为了编程语言中的一匹黑马。
在刚刚过去的 2019 年,Swift 经历了两件大事:SwiftUI 的发布和 Swift for TensorFlow 的发布。

SwiftUI 是苹果公司的最新框架,通过 SwiftUI,开发者仅使用一组工具和 API 就能为所有苹果设备构建用户界面。它的口号是,“更好的应用程序,更少的代码”。
Swift for TensorFlow 是一个将谷歌 TensorFlow 框架和 Swift 集成在一起的深度学习和可微分编程平台,这也是 Swift 的一个全新用途。

除此之外,2019 年 3 月发布的 Swift 5 也终于迎来了 ABI 稳定,使得 Swift 获得了更多开发者的青睐。
未来,Swift 有了更多的发展方向,不仅可以用于 App 开发,在服务器、网页、AI、IoT 和脚本等方向均有余力。所以,你觉得 Swift 未来将如何发展?你愿意去学习吗?

官网宣布 ArgumentParser 库正式开源: https://swift.org/blog/argument-parser/