现代的新语言--Swift初探

新的语言

WWDC简短的介绍,新的语言Swift就问世了,虽然新语言的名字导致贴吧下歌手粉丝和开发者们争抢地盘- -,不过雨燕就是这么来了。

WWDC keynote里给Swift打上了很多标签:

Closures,Generics,Namespaces,Type inference,Multiple return types

闭包,泛型支持,支持命名空间,去除隐式类型转换,多返回值等这些优秀的特性让这门语言显得现代和便捷,再加上学习了很多其他语言类似Go,JavaScript等等的优秀语法,它同时兼具编译语言的高性能和脚本语言的交互性,也许这些促成了Apple拿它来取代Objective-C的原因。这篇文章主要对常用语法进行简单概述。

简单的赋值与打印

let  l = "hello"
//常量赋值,Swift里面";"不是必要的

var v = "world"
//变量赋值

println(l)
//使用println来进行log

println("nihao \(v)")//使用\()来格式化输出

显式的声明类型

var str :
String = "nihao"

var numStr =
"4"

var realNumber =5

var sum = numStr + realNumber//这么写编译器会提示error 因为不支持隐式的类型转换

当声明类型时,如果没有明显的生命为String, 编译器也会进行类型推导(Type inference),认为它是String类型的。所以在类型上面去除了OC的弊端后,让错误及早的显现出来。

Optional

但是如果想要实现上面的运算,其实也是能够实现的,这里需要引入一种新的概念Optional.

借助"?""!"来实现。

当我们不确定这个值是否现在或将来可以为nil时,会在赋值或者使用时加上这些符号标识在尾部。

var nilStr :
String? ="nilOrNotNil"

nilStr = nil

这样它就可以变为nil,默认的赋值是不能赋值为nil的。

注意这里的nil并不是Objective-C里使用的nil空指针,而是一种NilType。

当我们确定它不为空的时候则可以加上"!"

如运算的那个例子,我们可以借助String的toInt()函数和"!"来完成我们想进行的运算。

于是代码看起来像这样:

var numStr =
"4"

var realNumber =5

var sum =numStr.toInt()! +realNumber

数组及字典声明

var numbers = [1,5,2,1,6]

var dict = ["isNew" :"yes",

"name"  : "Swift"]

两种数据结构都使用中括号来表示,而不是字典用大括号了,这样倒是能和函数流程控制以及闭包区分开。

numbers[3] =4

可以直接对数组中的元素进行赋值,而不必在乎是不是mutable array或者array了

流程控制语句

for循环及if语句

numbers = [4,5,6,7,8,9]

var largeThanThree = 0

for n innumbers {

if n > 3 {

largeThanThree++

} else {

largeThanThree--

}

}

largeThanThree //6

遍历字典时可以获取key value

for (question , answer) indict {

if question == "isNew" {

answer //yes

} else {

answer //swift

}

}

对于optional在if语句中的使用需要注意一下

var optionalStr : String? ="swift"

var greeting : String? ="nihao"

optionalStr = nil

if let name =
optionalStr {

greeting = "nihao ,
\(name)" //不会执行

}

但是如果optionalStr 没有被赋值为nil,也就是仍然为"swift"则会给greeting变量赋值为"nihao, swift"

switch语句

Swift的switch支持对String的case比较

let object = "water"

var statement = "the object is "

switch object {

case "ice" :

statement += "冰"

case "water" ,"other":

statement += "水"

default :

statement += "未知"

}

statement //"the object is水"

这里不再需要break,当需要多个匹配统一代码时仍然用逗号隔开

while语句

var big = Int8.max//127 八位integer最大值

while big >
0 {

big--

}

控制范围的for

把通常的for循环用swift写会是

var loop = 0

for var i =
0; i < 3; i++ {

loop++

}

loop //3

现在swift支持了一种新的语法来完成这种操作

loop = 0

for i in
0..3 {

loop++

}

loop //3

那如果想让i取边界值,可以用0...3来代替0..3

函数

函数在Swift中变得十分灵活起来,它可以支持单一返回值,返回多个值,甚至嵌套函数,返回函数或者用函数作为参数等等。

func sayHello(person name :
String, weekday day : String) ->
String {

return"hello
\(name), today is \(day)"

}

var res = sayHello(person:"mattt", weekday :
"monday")

->作为返回值符号, name前的person 属于参数表述,也可以不加直接将值传递进去,这里为了函数方便使用才加上。

可变参数的多返回值

多个不同类型或相同类型的值组成的数据结构Swift里称为元组(tuple)

下面一个函数传入可变参数,使用元组返回多个值

func caculate(numbers: Int...) -> (Int,Int) {

var nSum = 0

var nAvg = 0

for number in numbers {

nSum += number

}

nSum

nAvg = nSum / numbers.count

return (nSum, nAvg)

}

var (s: Int, a:
Int) = caculate(1,2,3)

s //6

a //2

嵌套函数

func funs(number : Int) ->Int {

var y = 10 + number

func add() {

y++

}

add()

return y

}

函数也可以作为返回值进行传递

func makeIncrementer() -> (Int ->Int) {

func addOne(number: Int) ->Int {

return 1 + number

}

return addOne

}

var increment = makeIncrementer()

increment(7)

闭包函数

var numbers: Int[] = [4,3,1,2,5]

numbers.map({

(number: Int) -> Int in

let result = 3 * number

return result

})

这篇博客简单介绍了Swift初步的使用,如果有不当的地方希望指出。

现代的新语言--Swift初探

时间: 2024-08-10 23:15:24

现代的新语言--Swift初探的相关文章

Swift 新语言开发

全书目录: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年很有料啊!当看到Swift出来的时候,瞬间傻眼,又要学习新语言了.这篇文章来自苹果官方的<The Swift Programming Language>一书,500页左右,在苹果官网有下载.Swift大家都没实际用过,本翻译一定是有各种错漏的,各位多多包涵,我会不断更新修正的. --(博客园.新浪微博)葛布林

幼谈苹果新开发语言:Swift和苹果的用心

今天是个值得纪念的日子:由于苹果的WWDC大会.苹果的每次WWDC(全球开发人员大会)举行都让我们像打了肾上腺素这么兴奋.幸福.惊叹.震撼.深思. 今年也不例外,最关键的是苹果带来了它的一门新开发语言:Swift. 霎时间风起云涌,短短几个小时互联网界掀起了一股谈论Swift的小高潮,假设你不知道Swift,你会觉得这是一件非常丢脸的事情,粑粑. 为了不至于太落后受歧视,我今天也来简单谈谈Swift(不知道为何,国内把它称为雨燕.别这样好吗?这让我想起了 长安铃木的Swift 雨燕汽车) 一.全

apple swift 初探

今天凌晨,苹果举办了wwdc14,自然又成了各大网站的头条.尽管使用作为mac os的用户已经有接近10年时间,但是对苹果的开发平台却一直没什么了解,一方面是因为并不认可苹果的用户哲学,另一方面由于长期从事c++开发,对objective-c的语法也什么好感,甚至觉得怪异(个人感觉). 下午浏览新闻的时候,却发现wwdc14没有发布硬件产品,却有一门新的开发语言swift发布,按照苹果的说法是"innovative new programming language",不禁对这门语言产生

swift初探(供objective c开发者参考)

6月初的wwdc苹果推出了一门新的开发语言swift.系统10.9.3以上安装xcode6 beta版即可体验swift. 苹果公司做了尽可能多的努力让这门语言迅速成为一个工业级的实用编程语言,而不是华而不实的花瓶. 通过xcode6查看文档,可以发现之前现存的接口都多了swift适配,举例如下(以下都从苹果官方文档中摘录): 简单方法适配: swift: func UIImageJPEGRepresentation(_ image: UIImage!, _ compressionQuality

关于苹果最新语言Swift

Swift是为IOS和OSX应用制定的新编程语言,吸取C和Objective-C语言的精粹,但不损失与C语言的兼容性.Swift采用安全编程模型.加入了各种现代编程语言特性,使得该语言更易被掌握.更具扩展性,用起来更有趣.Swift语言的奠基石是已经成熟的.并为大家所喜爱的Cocoa和Cocoa Touch框架,新语言使大家可以尽情畅想新软件开发的机遇. Swift沉积了多年的研发成果,苹果公司为提供高效Swift语言编译器.调试器和基础架构打下了坚实基础.我们使用Automatic Refer

WWDC三大看点:Mac新系统Yosemite、iOS 8及新编程语言Swift

导语:苹果公司专门针对开发人员公布全新的 Swift 编程语言以及新版的 Xcode,苹果公司称其拥有"快速.现代.安全.互动"等特性 苹果在今年的 WWDC 开发者大会上发布了新版 Mac OS X 系统及 iOS 系统,带来多项改进或体验优化.本次大会是苹果第 25 届开发者大会,苹果注册开发者已达 900 万名. 据苹果 CEO 库克介绍,全球 PC 行业下滑5% 的情况下,苹果 Mac 却实现了 12% 的增长,总装机量达到 8000 万台,而最新一代操作系统 Maverick

苹果新编程语言Swift仅耗时4年完成开发

<<<-------------  <_< 向左看 Swift 创造者克里斯·拉特纳 6 月 5 日消息,据国外媒体报道,苹果新编程语言 Swift,从开始研发到最终发布仅用了不足 4 年时间.该语言背后的创造者为苹果开发者工具部门总监克里斯·拉特纳(Chris Lattner),根据其在博客上的表述,Swift 的底层架构大多由其一人开发完成,而开发期间,仅少数内部人士对此项目知晓. Swift 语言开发工作是从 2010 年 7 月开始,但直到 2013 年才获得了苹果开

转 苹果的新编程语言 Swift 简介

苹果官方文档地址 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html 原文地址 http://zh.lucida.me/blog/an-introduction-to-swift/ 关于 这篇文章简要介绍了苹果于WWDC 2014发布的编程语言--Swift. 原文作者: Lucida Blog 新浪微博 豆瓣

IOS开发语言Swift入门连载---可选链

IOS开发语言Swift入门连载-可选链 可选链(Optional Chaining) 是一种可以请求和调用属性.方法及下标脚本的过程,它的可选性体现于请求或调用的目标当前可能为空(nil ).如果可选的目标有值,那么调用就会成功:相反,如果选择的目标为空(nil ),则这种调用将返回空(nil ).多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(nil )将导致整个链失效. 注意: 的可选链和 Objective-C 中的消息为空有些相像,但是 Swift 可以使用在任意类型中