osx

使用Swift(1)

序言 Apple新推出的Swift编程语言无疑会成为最近码农研究的热点,现在官方有一本官方Guide,这本书已经有国内的开发者开始翻译了(#该来的总会来的#)。 当然只看完Swift的语法还不足以进行Cocoa应用开发,用郭总的话说,语言并不会带来新的起跑线,要想开发优秀的Cocoa应用还是需要对Cocoa这个框架的深入理解。这就跟用RubyMotion仍然要学习Cocoa是一个道理,万变不离其宗。这方面就可以参考Using Swift with Cocoa and Objective-C这篇文档。 另外,Swift刚刚推出一天就已经有开发者用它开发了FlappyBird,可见大家对这门语言的热情。这个系列的博客主要是记录我在学习Swift语言过程中感觉有趣的语法、用法,并不会对所有语法都逐一进行分析,而是举几个简单的例子帮我自己来理解Swift这门语言。如果这些例子能帮助你对Swift这门语言建立一些基本的认识或者感觉,那就再好不过了! PS:博客内容的记录顺序大部分是根据官方Guide来的,因为这是我的阅读顺序,在阅读过程中可能会根据我的理解跳跃穿插一些内容。另外因为我也是在逐渐阅读文档,所以可能写过的内容会有多次修订。 环境要求 要使用Swift必须要安装Xcode 6 Beta版,安装Xcode6不需要10.10,在10.9上就可以使用。 代码 本文中使用道德测试代码都可以在SwiftWithCocoa这个repo中找到,大部分代码都在MyPlayground中。 “变量”不变 第一次接触这个概念是在了解Scala的时候,Scala中有两个关键字,分别是val和var,用var声明的变量跟其他语言中的一样,可以改变值,但是val声明的变量,一旦第一次赋值之后就无法改变了,也就是所谓的“变量”不变。这种类型主要应用在多线程的场景中,可以有效的避免资源抢占,死锁等情况的发生,从语言级保证了代码的稳定性和执行效率。 Swift也提供了类似的声明方法,分别是let和var,用let声明的是常量,用var声明的是变量。 基本数据类型 Tuple Tuple应该是我从python、ruby转到OC之后感觉最需要的类型。Tuple最大的贡献在于能轻便的创建一些临时对象,并在不同的领域使用。比如函数返回的时候可以利用tuple便捷的返回多个值,这是现在很多流行语言都支持的。 // Returning from func func response() -> (Int, String) { return (404, "Not Found") } var code: Int, description: String (code, description) = response() // code == 404 // description == "Not Found" 我记得我最开始学python,交换变量的方法真是让我震惊了,Swift里面(因为支持了tuple,所以)也有类似的方法了: // Swapping vars var first = 1 var second = 2 // Change 2 to "ASDF" and see the error (first, second) = (second, first) // first == 2 // second == 1 需要注意的是,因为Swift强调的是类型安全,所以上面例子中的first和second必须要是同样的类型才能交换,如果类型不同需要进行显式的类型转换,下面会进行讨论。