码迷,mamicode.com
首页 > 编程语言 > 详细

A Swift Tour

时间:2015-03-09 17:34:03      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:ios   swift   tour   

目录

About Swift

Swift是一门汲取了CObjective-C的精华,用来开发iOSOS X应用的新的编程语言(由苹果公司于2014年6月7日发布)。Swift摆脱了C语言兼容性的约束,采用安全的编程模式并且添加了现代化的特性,让编程更加容易,灵活和有趣。Swift诞生伊始,在成熟而又深受欢迎的CocoaCocoa Touch框架的支持下,可以重新定位软件开发工作。

Swift是花费了多年打造的编程语言。苹果公司通过改进我们现行的编译器,调试器以及框架底层结构为Swift奠定了基础。我们用ARC(Automatic Reference Counting - 自动引用计数)简化了内存管理。我们的框架栈,是建立在FoundationCocoa这两个框架的坚实基础之上的,并且已经全部使之现代化,标准化。Objective-C它自己已经渐渐完善,支持了blockscollection literals,以及 modules, 使得框架在无破坏的情况下采用现代语言技术。基于这个基础,我们现在能够介绍一门将来用于苹果开发的新的编程语言。

Swift会让Objective-C的开发者感觉很熟悉。它采用了Objective-C参数命名方式的可读性以及动态对象模型。它可以无缝访问现有的Cocoa框架以及与Objective-C混合编程。Swift还介绍了许多新的特性以及结合了语言中面向过程和面向对象的部分

Swift对新的程序员很友好。它兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。它支持的playgrounds, 是一个创新的特性,能够让程序员利用Swift代码在不需要编译和运行app的情况下,马上看到代码所对应的结果。

Swift将现代语言和苹果的工程文化智慧很好的结合起来。编译器在性能方面充分发挥出来,而语言在开发领域充分得到展现,它们之间无须任何妥协。它的设计从"hello world"工程的规模到一个完整的操作系统都得到完整的考虑。所有的一切,让Swift成为所有开发者以及苹果公司未来的福音。

Swift是一种非常优秀的方式去开发iOS以及OS X应用程序,而且在将来继续在新特性和新功能上会更加完善。我们对的Swift未来是十分有信心的,我们已经迫不及待地想看到你用它来开发的产品了。

Hello World

SwiftC语言类似采用一条打印语句来输出“hello world”

println("hello world")

此时此刻,你会想很多问题,main函数在哪?怎么println("hello world")语句后面没有分号?怎么没有程序的返回值?这又是Swift语言的一大特性,程序不需要写任何main函数,执行顺序默认从上到下。每条语句后面也不需要加分号“;”。

变量与常量

C语言中定义常量应该是以const为关键字来定义,而在Swift中我们用的是let关键字。

let myConstant = 10
  • 以上我们就定义了myConstant这个值为10的常量

C语言中定义变量我们没有任何关键字,而Swift中我们采用关键字var来定义

var myVariable = 42
  • 以上我们就定义了myVariable这个值为42的变量

这个时候机智如我的你又有疑问了,常量变量的数据去哪了?这又是Swift语言的特性。Swift根据变量(这里所说的变量包括了常量和变量以下如果不作区分都是这个意思)声明时所赋的初始值,自动捕获数据类型(“什么?!自动捕获数据类型,这也太吊炸天了吧!!”)。没错Swift,就是具有这样的功能。随之而来的疑问又是,如果我想只声明变量,不想给它赋值,那它捕捉个鬼啊。的确,如果你在声明变量的时候,如果像这样写let noInitialValue或者var noInitialValue编译器是会报错的。这个时候你要指定它的数据类型了,声明方式如下。

var noInitialValue: Int
noInitailValue = 10
  • 以上声明了一个变量,但是没有赋初始值, 在下一行给它赋值
  • 注意let关键字定义的变量声明的时候绝对不能没有初始值,因为常量在声明之后是不能改变的

数据类型转换以及字符串(String)插值

变量的数据类型是不能隐式转换的。什么意思呢?在C语言中,浮点型变量是可以直接赋值给整型变量的,只不过会造成精度丢失罢了,并不会报语法错误。而Swift中这样是不允许的,它必须显式的转换。

//隐式转换方式,这样是错误的
var floatValue = 12.5
var intValue: Int
intValue = floatValue
  • 以上是隐式转换方式,这样是错误的
//显式转换方式,这样是正确的
var floatValue = 12.5
var intValue: Int
intValue = Int(floatValue)
  • 以上是显式转换方式,这样是正确的

同样Int型也可以转换成String类型的

//10Apple
let numberOfApples = 10
let fruite = "Apple"
let numberOfFruite = String(numberOfApples) + fruite
  • 以上numberOfFruite的值为“10Apple”

可以转换成字符串类型的数据还有更加快捷的转换方式就是字符串插值在字符串内用一个“\()”的形式,在括号里面加入可以转换成字符串的变量

//10Apple
let numberOfApples = 10
let numberOfOranges = 5
let numberOfFruite = "\(numberOfApples + numberOfOranges)Fruite"
  • 以上numberOfFruite的值为“15Fruite”

数组(Array)和字典(Dictionary)

数字和字典都是用一个方括号的形式定义的“[ ]”。

//数组的定义方式
var? ?shoppingList? = [?"catfish"?, ?"water"?, ?"tulips"?, ?"blue paint"?]
?shoppingList?[?1?] = ?"bottle of water"
  • 以上shoppingList的值变为?”catfish”?, ?”bottle of water”?, ?”tulips”?, ?”blue paint”

初始化空数组(有内存地址,但是数组元素为0个)

//指定数据类型的空数组的定义方式
?let? ?emptyArray? = [?String?]()
  • 以上emptyArray的元素个数为0,但是已经确定了数组内的元素必须为String类型”

任意类型的空数组定义方式

//任意数据类型的空数组的定义方式
?var? anyType?EmptyArray? = [?]
  • 以上anyType?EmptyArray的元素个数为0, 但是不能用anyType?EmptyArray[0] = 1这种方式赋值,只能将已知的数组赋值给这个数组
//字典的定义方式
?var? ?occupations? = [
?    ?"Malcolm"?: ?"Captain"?,
?    ?"Kaylee"?: ?"Mechanic"?,
?]
?occupations?[?"Jayne"?] = ?"Public Relations"
  • 以上occupations的值变为?[“Malcolm”: “Captain” ?, ?”Kaylee”? : “Mechanic”, ? “Jayne” : “Public Relations”?]
  • 字典就是以key-value键值对的形式存储的,它的索引方式是通过key来找到对应的value,这里”Malcolm”是key, 这个key所对应的value为”Captain”

初始化空字典(有内存地址,但是字典元素为0个)

//字典的定义方式
?let? ?emptyDictionary? = [String: Float?]()
  • 以上emptyDictionary为空字典,里面没有元素,它的keyString类型,对应的valueFloat类型

任意key类型,value类型的空字典定义方式

//任意key类型,value类型的空字典定义方式
?var? anyType?EmptyDictionary = [:?]
  • 以上anyType?EmptyDictionary 为空字典,里面没有元素,它的key为任意类型,对应的value为任意类型,同样也不能通过anyType?EmptyDictionary["myKey"] = "myValue"的形式赋值,只能讲已知字典变量赋值给它

A Swift Tour

标签:ios   swift   tour   

原文地址:http://blog.csdn.net/qq_19762007/article/details/44155419

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!