Categories
程式開發

蘋果開源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/