23

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

 4 years ago
source link: https://www.infoq.cn/article/7kQ883AJ0jPeTTXJH5DX
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作为苹果四年磨一剑的产物,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/


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK