Swift编程语言初探

继WWDC2014后,新的编程语言Swift浮出水面,它具有快速、现代、安全、可交互等特征,并且其语法简单,入门门槛低,有望替代语法复杂难懂的Objective-C语言。据其作者Chris Lattner在博客上声称,该语言开发只用了4年时间,并且底层框架基本上都是由其一人开发完成。

按照惯例,先用Swift来编写一个简单的"Hello World"

println("Hello World")

没错,就这么简单,没有IMPORT语句,没有main函数,也没有@符号,分号也不是必须的。编译运行可以看到控制台打印的Hello World字样。

这里的println是全局函数,负责打印参数内容,并换行。

Swift可以说是融合其他优秀编程语言的结果,因此许多语法都和其他语言存在共同之处。下面将简单介绍一下该语言的一部分内容:

1. Swift用var声明变量,用let声明常量,如

var legs = 4               // 变量legs
let PI = 3.1415926    // 常量PI

那么legs和PI到底是什么类型呢?答案是Type Inference(类型推测),由于这两个语句在声明的同时并且初始化,因为4是Int类型,因此推测变量legs为Int类型,同理,3.1415926为Double类型,因此推测PI为Double类型。也可以强制规定类型:

var legs:Int
let PI:Double

若legs变量是整数类型,只需在变量名后添加冒号,紧接着跟随一个类型名即可。

2. 赋值运算符没有返回值,而在其他一些语言中,赋值运算符返回的是变量的值,(如 a = 5 表达式返回5),而作为新手在做条件判断时,经常用赋值运算符来代替"==",导致一些很难发现的逻辑错误,而在Swift中不会出现这种情况,因为这是一个语法错误,在编译期间会给出错误信息,如 if a = 5 { ... } ,if接受的是一个Bool值,而a = 5没有返回值,因此会出错。

/* In Java */
int a = 1;
if(a = 5) { ... }  // Compile Success
/* In Swift */
var a = 1
if a = 5 { ... }   // Compile error
// if a == 5 {...} This is correct one

3. switch语句的case后不用加break。这也是其他语言新手经常犯的一个错误,而在Swift中,switch选择的case语句执行完毕后立即跳出switch语句,而不会因为语句后没有break继续执行后面的case或者default语句。

var a = 1
switch a {
 case 1: println(1)
 case 2: println(2)
 default: println(3)
}
// no break at all

4.  可以用n..m 或者 n...m 代替一个数组,比如:

for index in 0..3 { println(index) }
// 0
// 1
// 2

..代表前闭后开,...代表前后都闭合,所以0..3代表数组[0,1,2],而0...3代表[0,1,2,3]

5. 如何在字符串中插入变量或常量呢?Swift提供一个特殊的语法:

var number = 5
println("I got \(number) books")

// I got 5 books

是不是很简单,只需在字符串中用\(和)包裹你要插入的变量或常量即可。

6. 在Swift中,存在两种类型,一种是引用类型(reference type),一种是值类型(value type),class是引用类型,而enumeration和struct是值类型,它们的一个重要区别是传递的方式不一样,一个是传递副本,一个是传递本身。

在Swift中,class的样子是:

class Vehicle {
    var wheels:Int?
    var maxPassengers:Int?

    func description() -> String {
        return "This vehicle has \(wheels!) wheels,max passengers is \(maxPassengers!) " }

    init(withWheels wheels:Int,andMaxPassengers maxPassengers:Int) {
        self.wheels = wheels
        self.maxPassengers = maxPassengers }
    deinit { }
}

该类名为Vehicle,声明了两个属性,wheels和maxPassengers。以及一个实例方法description,该方法没有参数,返回值为字符串类型。同时,该类提供一个初始化方法,init是关键字,该方法接受两个参数,代表之前声明的两个属性。该参数包括三个部分,分别是外部参数名(external parameter name),局部参数名(local parameter name)以及参数类型,在方法调用里会用到外部参数名,局部参数名是用在方法体内的。引进这种方法的好处是继承Objective-C的优良特性,使代码段更像一个句子,更富有描述性。下面来看看如何使用这个类:

var porsche = Vehicle(withWheels:4,andMaxPassengers:5)
println(porsche.description())
// This vehicle has 4 wheels,max passengers is 5

另外在类的属性中,?代表optional,即该属性要么有值,要么没有值(nil)。

Swift的语法文档见:http://download.csdn.net/detail/czjuttsw/7450821

Swift编程语言初探

时间: 2024-08-13 19:28:01

Swift编程语言初探的相关文章

Apple Swift编程语言新手教程

Apple Swift编程语言新手教程 作者: 日期: gashero 2014-06-03 FROM:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的

《Swift编程语言》中文翻译及读书笔记page25

The Swift Programming Language读书笔记学习笔记 第25页 本页主要说在swift语言里可以使用分号,但分号不作为每条swift语言语句的结尾 而是间隔写在一行的多条swift语句. eg: var x = 194 var y = 184 var z = 7311 上边三行swift语句可写成一行 var x = 194, y = 184, z = 7311 在本页还提及了swift里的int数据,这和其他语言里int整形数据没啥区别. 特别之处1)提及了UInt8

Swift编程语言学习2.2——基本运算符(下)

三元条件运算(Ternary Conditional Operator) 三元条件运算的特殊在于它是有三个操作数的运算符,它的原型是问题?答案1:答案2.它简洁地表达根据问题成立与否作出二选一的操作.如果问题成立,返回答案1的结果; 如果不成立,返回答案2的结果. 使用三元条件运算简化了以下代码: if question: { answer1 } else { answer2 } 这里有个计算表格行高的例子.如果有表头,那行高应比内容高度要高出50像素; 如果没有表头,只需高出20像素. let

Swift编程语言学习1.5——类型别名、布尔值、元组

类型别名 类型别名(type aliases)就是给现有类型定义另一个名字.你可以使用typealias关键字来定义类型别名. 当你想要给现有类型起一个更有意义的名字时,类型别名非常有用.假设你正在处理特定长度的外部资源的数据: typealias AudioSample = UInt16 定义了一个类型别名之后,你可以在任何使用原始名的地方使用别名: var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound 现在是 0 本例中,A

Swift编程语言学习1.6——可选值

可选值 使用可选(optionals)来处理值可能缺失的情况.可选表示: 有值,等于 x   或者没有值 注意: C 和 Objective-C 中并没有可选这个概念.最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示"缺少一个合法的对象".然而,这只对对象起作用--对于结构体,基本的 C 类型或者枚举类型不起作用.对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失.这种方法假设方法的

Swift编程语言学习1.7——断言

断言 可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况.然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行.这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因. 使用断言进行调试 断言会在运行时判断一个逻辑条件是否为true.从字面意思来说,断言"断言"一个条件是否为真.你可以使用断言来保证在运行其他代码之前,某些重要的条件已经被满足.如果条件判断为true,代码运行会继续进行:如果条件

Swift编程语言学习——常量与变量

常量和变量把一个名字(比如maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比如数字10或者字符串"Hello")关联起来.常量的值一旦设定就不能改变,而变量的值可以随意更改. 声明常量和变量 常量和变量必须在使用前声明,用let来声明常量,用var来声明变量.下面的例子展示了如何用常量和变量来记录用户尝试登录的次数: let maximumNumberOfLoginAttempts = 10 var currentLogin

苹果Swift编程语言入门教程【中文版】

目录 1 简介 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 简介 Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束.Swift采用了安全的编程模式和添加现代的功能来是的编程更加简 单.灵活和有趣.界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向. Swift已经存在了多年.Apple基于已有的编译器.调试器.框架作为其基础架构.通过ARC(Aut

Swift编程语言(中文版)官方手册翻译(第一部分)

独立翻译,进度会比较慢.等不及的可以看CocoaChina翻译小组,他们也正在组织翻译,而且人手众多,相信会提前很多完成翻译.当然质量就见仁见智了.原文可以在iTunes免费下载 目前进度 4 JUN 2014:6.5 % 前言 今天Apple发布了新的编程语言Swift,也提供了一本将近400页的 The Swift Programming Language(Swift编程语言).虽然我没有开发者账号,没法实际上机练习Swift代码,但这不影响我阅读这本书,以及用铅笔在纸上运行这些小程序.Ap