简介
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。
Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Automatic Reference Counting,自动引用计数)来简化内存管理。我们的框架栈则一直基于Cocoa。Objective-C进化支持了块、collection literal和模块,允许现代语言的框架无需深入即可使用。(by gashero)感谢这些基础工作,才使得可以在Apple软件开发中引入新的编程语言。
Objective-C开发者会感到Swift的似曾相识。Swift采用了Objective-C的命名参数和动态对象模型。提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能和结合面向过程和面向对象的功能。
Swift对新的程序员也是友好的。他是工业级品质的系统编程语言,却又像脚本语言一样的友好。他支持playground,允许程序员实验一段Swift代码功能并立即看到结果,而无需麻烦的构建和运行一个应用。
Swift集成了现代编程语言思想,以及Apple工程文化的智慧。编译器是按照性能优化的,而语言是为开发优化的,无需互相折中。(by gashero)可以从"Hello, world"开始学起并过渡到整个系统。所有这些使得Swift成为Apple软件开发者创新的源泉。
// This is a Basic for swift import UIKit //用let来声明常量,用var来声明变量 let staticV = "static final value"; var param = "param0"; param = "param1"; //如果你的代码中有不需要改变的值,请使用let关键字将它声明为常量。只将需要改变的值声明为变量。 //当你声明常量或者变量的时候可以加上类型标注(type annotation) var stringDef: String = "String default"; var intDef: Int = 10; //一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型, //Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。 println("show String:\(stringDef)"); //Swift 提供了8,16,32和64位的有符号和无符号整数类型。 var num8 = UInt8.min; var max8 = UInt8.max; var max16 = UInt16.max; //整数字面量可以被写作: //一个十进制数,没有前缀 //一个二进制数,前缀是0b //一个八进制数,前缀是0o //一个十六进制数,前缀是0x let decimalInteger = 17 let binaryInteger = 0b10001 // 二进制的17 let octalInteger = 0o21 // 八进制的17 let hexadecimalInteger = 0x11 // 十六进制的17 //类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用typealias关键字来定义类型别名。 typealias newUnit8 = UInt8; newUnit8.max; //元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型 let http503Error = (503 , "can't connect server"); println("key:\(http503Error.0)"); //你可以将一个元组的内容分解(decompose)成单独的常量和变量 let (statusCode, statusMessage) = http503Error; //数据信息 let http200Status = (statusCode: 200, description: "OK"); //使用可选类型(optionals)来处理值可能缺失的情况。 var stringV = "hello"; var intV = stringV.toInt() ?? 10; var int_String = "101"; var str_int = int_String.toInt() ?? 9; //你可以使用if语句来判断一个可选是否包含值。如果可选类型有值,结果是true;如果没有值,结果是false。 var strV = "world"; //strV = nil;nil不能用于非可选的常量和变量。如果你的代码中有常量或者变量需要处理值缺失的情况,请把它们声明成对应的可选类型。 if strV.toInt() == nil { println("This is nil."); } // strV1 包含一个可选的 String 值 or nil //把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。 var strV1:String? = "Test nil"; strV1 = nil; var strV2:String? = "test show"; println(strV2!); //你可以把隐式解析可选类型当做一个可以自动解析的可选类型。你要做的只是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。 //可选类型String和隐式解析可选类型String var S0:String? = "select Objs"; println(S0!); var S1:String! = "default obj"; println(S1); //你仍然可以把隐式解析可选类型当做普通可选类型来判断它是否包含值: //如果一个变量之后可能变成nil的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是nil的话,请使用普通可选类型。 if let st = S1 { println(st); } //断言 assert(10 > 0, "show value");
Swift是编写iOS和OSX应用的梦幻方式,并且会持续推进新功能的引入。我们迫不及待的看到你用他来做点什么。