写点什么

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

  • 2020-03-12
  • 本文字数:1375 字

    阅读完需:约 5 分钟

苹果开源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/


2020-03-12 09:342620

评论

发布
暂无评论
发现更多内容

窝家恶补三月,字节跳动三面,终于喜提offer!分享面试感受

Java架构之路

Java 程序员 架构 面试 编程语言

股东变员工,所以不发工资?| 法庭上的CTO(18)

赵新龙

CTO 法庭上的CTO

浅谈如何做客户端性能测试

行者AI

性能测试

大佬带你看源码!阿里内部Android笔记火爆IT圈,3面直接拿到offer

欢喜学安卓

android 程序员 面试 移动开发

大作业一

黄立

Java程序员晋升之路:“Java高级核心知识全面解析”

Java架构之路

Java 程序员 架构 面试 编程语言

工具词典:精力管理

lidaobing

精力管理 张遇升 28天写作

甲方日常 75

句子

工作 随笔杂谈 日常

ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度

华为云开发者联盟

学习 华为云

圣诞狂欢,保险师APP赋能精细、个性化的运营服务

DT极客

ZooX首发双向电动无人车,会成为自动驾驶出行的主流吗?

脑极体

“有点技术之外,基本什么都没有”的CTO | 法庭上的CTO(15)

赵新龙

CTO 法庭上的CTO

未签订劳动合同的CTO | 法庭上的 CTO(17)

赵新龙

CTO 法庭上的CTO

3D 可视化突发公共卫生事件 ,防护效率高达90%

一只数据鲸鱼

疫情 物联网 数据可视化 数据监测 3D可视化

字节面试坎坷之路,第一次二面凉了!捞起来之后一面就凉了;我太难了呀!

Java架构之路

Java 程序员 架构 面试 编程语言

(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路

Java鱼仔

Java 程序员 面试 大学生

这个问题值得讨论吗?

Alan

沟通 团队文化 七日更 28天写作

Alibaba面试官:“这该死的程序员,知识竟如此渊博!”

Java架构之路

Java 程序员 架构 面试 编程语言

业务架构设计迭代演进思路

程序员架构进阶

架构 中台 业务架构

第八课性能优化作业-判断合并链表

Geek_michael

极客大学架构师训练营

劫持Chrome浏览器“获利”8000万元 | 法庭上的CTO(13)

赵新龙

CTO 法庭上的CTO

混合用工、被拖欠工资的 CTO | 法庭上的 CTO(16)

赵新龙

CTO 法庭上的CTO

犯“走私罪”的CTO | 法庭上的CTO(19)

赵新龙

CTO 法庭上的CTO

LeetCode题解:剑指 Offer 40. 最小的k个数,sort,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

这份阿里P8级别内部疯传的“Linux私房菜”让你一次吃个饱

Java架构之路

Java 程序员 架构 面试 编程语言

程序员开发指南!1-3年的Android开发工程师看过来,经典好文

欢喜学安卓

android 程序员 面试 移动开发

为新基建按下加速键:从openEuler看中国操作系统的产业生态未来

脑极体

创建493个测试账户,被公司索赔527万 | 法庭上的 CTO(14)

赵新龙

CTO 法庭上的CTO

如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿

华为云开发者联盟

人脸识别 智能 识别

腾讯大牛亲自带你学:Java安全weblogic T3协议漏洞!

比伯

Java 编程 架构 面试 计算机

阿里P8大牛手把手教你!高级Android晋升之View渲染机制,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

  • 扫码加入 InfoQ 开发者交流群
苹果开源ArgumentParser:为Swift加个工具?_语言 & 开发_李俊辰_InfoQ精选文章