怎样使用Swift创建命令行脚本

Python018

怎样使用Swift创建命令行脚本,第1张

一种很好地利用时间的方法是学会将Swift作为一种脚本语言来使用,可以用这种脚本语言来编写一些简单的命令行工具。

关于如何写Swift命令行脚本的序列包括两部分,这里先介绍第一部分。在这一部分,我们将一起来探究如何在命令行上执行Swift脚本,解析命令行参数以及怎么样导入依赖库等。

在该系列的第二部分中,我们将编写一个简单的Swift脚本来获得最新的比特币的价格,或者也可以求出每小时比特币的平均价格。这个脚本将使用Bitstamp API来获取需要的数据。在这两篇博文中,我着重使用Swift2.0来实现,所以为了运行我的这些小例子,你需要Xcode7以上版本,并且你的Xcode还要安装命令行工具哟。

Hello World

首先,我们来谈谈在创建Swift脚本时的一些选项。其实在命令行上面执行Swift脚本还是很简单的,可能你首先想到的是Python或者是Ruby等脚本的运行方式。下面是一个完整的Swift版Hello World脚本:利用下面的代码创建一个hello_world.swift文件,然后赋予其执行权限,就是建Hello World脚本所需的全部步聚。

#!/usr/bin/swiftprint("Hello World!")

那么怎么样在命令行中运行这段代码呢?很简单,你只要像运行其他的可运行的Bash或者ruby脚本一样,在命令行中输入下面命令即可:

$ ./hello_world.swift

命令行就会给你打印出:Hello World! 就是这么简单。

参数解析和Carthage框架

为了得到一些不错的命令行参数解析功能,并展示如何使用命令行脚本将其导入库,我将利用便利的OptionKit库。这个库可以用Carthage来搭建。在此之前,确保你已经安装了Carthage(使用Homebrew这个操作就像brew install carthage那么简单)。假如你已经安装了Carthage,那我们就可以直接运行以下命令给我们的脚本设置一个文件夹,然后初始化文件Cartfile,然后开始对Carthage进行编译:

mkdir swift_btc_scriptcd swift_btc_scriptecho github "nomothetis/OptionKit" ~>1.0 >Cartfilecartage update

这时候,Carthage将OptionKit复制下来,并且作为一个框架保存到swift_btc_scripit目录下的Carthage/Build/Mac文件夹里面。大功告成!我们已经创建好一个编译库,能够导入我们所创建的Swift脚本。接下来我将用下面的代码新建一个options.swift文件来确保我们所有的排序都是正确的。当然我们也需要给定这个文件相应的执行权限,以便于我们能够直接在命令行上面对它进行调用。

运行参数

在命令行上面输入参数-s或者—say执行我们所创建的文件,将返回我们给它设定的相应结果,接着在命令行中输入-h或者—help,或者你干脆什么都不输入,命令行将返回一些帮助信息给我们。如下面这些就是我们脚本直接输出的信息:

$ ./btc.swift --not-a-commandInvalid option: --not-a-command$ ./options.swift -husage: btc.swift [-s|--say] [-h|--help]$ ./options.swift --say Well hello there pilgrim.Well hello there pilgrim.

下一步

到这一步,我们已经设置了一个小的命令行框架了,那么我们需要实现我们之前所说的获取比特币的价格,就是非常简单的事情咯。在下一章中,你将看到我们是如何使用命令行的Swift脚本来调用我们所熟知的iOS和MAC OS 的Foundation类库,帮助我们获取比特币的价格的

作者:find goo

链接:https://www.zhihu.com/question/20491745/answer/100741761

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、python虚拟机没有java强,java虚拟机是java的核心,python的核心是可以很方便地使用c语言函数或c++库。

二、python是全动态性的,可以在运行时自己修改自己的代码,java只能通过变通方法实现。python的变量是动态的,而java的变量是静态的,需要事先声明,所以java ide的代码提示功能优于python ide。

三,python的产生几十年了,几十年前面向过程是主流,所以用python有好多程序用的是面向过程设计方法,很多概念从c语言过来的,class在python中是后加入的,而java是为了实现没有指针的c++(当年com组件用的引用记数,java用的虚拟机),主要采用面向对象的设计方法,很多概念是oop的概念。面向过程,相对简洁直观,但容易设计出面条程序,面向对象,相对抽象优雅,但容易过度抽象。

四,在实际使用的python入门简单,但要学会用python干活,需要再学习python各种库,pyhton的强大在于库,为什么python的库强大,原因是python的库可以用python,c语言,c++等设计,再提供给python使用,所以无论gpu运行,神经网络,智能算法,数据分析,图像处理,科学计算,各式各样的库在等着你用。而java没有python那么多的开源库,很多库是商业公司内部使用,或发布出来只是一个jar包,看不到原始代码。python虚拟机因为编译性没有java的支持的好(或者说故意这么设计的),一般直接使用源码(linux),或源码简单打个包(如pyexe)。

五、python有很多虚拟机实现,如cython,Pyston,pypy,jython, IronPython等等,适合用于业务语言,或插件语言,或面向领域语言,而java因为虚拟机巨大,很少用于插件语言,发布也不方便。

六、java主要用于商业逻辑强的领域,如商城系统,erp,oa,金融,保险等传统数据库事务领域,通过类似ssh框架事务代码,对商业数据库,如oralce,db2,sql server等支持较好,软件工程理念较强,适合软件工程式的多人开发模式。python主要用于web数据分析,科学计算,金融分析,信号分析,图像算法,数学计算,统计分析,算法建模,服务器运维,自动化操作,快速开发理念强,适合快速开发团队或个人敏捷模式。

七、java的商业化公司支持多,如sap,oracle,ibm等,有商业化的容器,中间件,企业框架ejb。python的开源组织支持多,如qt,linux,google,很多开源程序都支持python, 如pyqt,redis,spark等。

八、python用途最多的是脚本,java用途最多的是web,pyhotn是胶水,可以把各类不相关的东西粘在一起用,java是基佬,可以通过软件工程组成几百个人的团队和你pk,商业化气息重。不过我认为还是python强大,因为可以方便调用c或c++的库,但软件工程和商业化运作没有java好,适合快捷开发。

九,关于钱。

如果你想写程序卖软件用java,可用上ibm服务器,上oracle数据库,上EMC存储,价格高,商业采购公司喜欢这种高大上。如果你要直接用程序生成金钱用python,python可以实现宽客金融,数据回测,炒股,炒期权,炒黄金,炒比特币,对冲套利,统计套利,有很多开源库,数据分析库,机器学习库可以参考。

十、java和python,都可以运行于linux操作系统,但很多linux可以原生支持python,java需要自行安装。java和python强于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受欢迎的原因在于不需要指针。

十一、对于移动互联网,python只能通过运行库运行于安卓或ios,java原生支持安卓开发,但不能用ios中。

十二、对于大数据,hadoop用java开的, spark用Scala开发,用python调用spark再分析更方便。