继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 C++ */
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

是不是非常easy。仅仅需在字符串中用\(和)包裹你要插入的变量或常量就可以。

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是keyword,该方法接受两个參数,代表之前声明的两个属性。该參数包含三个部分,各自是外部參数名(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编程语言初探的更多相关文章

  1. Swift编程语言(中文版)官方手册翻译(进度8.8%)

    翻译着玩,进度会比较慢. 等不及的可以看CocoaChina翻译小组,他们正在组织翻译,而且人手众多,相信会提前很多完成翻译. 原文可以在iTunes免费下载 目前进度 7 JUN 2014: 8.8 ...

  2. iOS Swift编程语言

    Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序. Swift是一款易学易用的编程 ...

  3. Swift编程语言资料合集

    在本周二凌晨召开的苹果年度开发者大会WWDC上,苹果公司推出了全新的编程语言Swift.Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提 ...

  4. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  5. iOS中生成并导入基于Swift编程语言的Framework

    从iOS 8.0开始就引入了framework打包方式以及Swift编程语言.我们可以主要利用Swift编程语言将自己的代码打包成framework.不过当前Xcode 7.x在自动导入framewo ...

  6. Swift编程语言中的方法引用

    由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与 ...

  7. Swift编程语言的相关资料

    苹果官方Swift文档<The Swift Programming Language> 苹果开发人员Swift文档及介绍 网友整理的Swift中文文档<Apple Swift编程语言 ...

  8. 苹果Swift编程语言新手教程【中国版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...

  9. [转]Swift 编程语言入门教程

    今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1   简介 2   Swift入门 3   简单值 4   控 ...

随机推荐

  1. vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)

    P1543极值问题 Accepted 标签:[显示标签] 背景 小铭的数学之旅2. 描写叙述 已知m.n为整数,且满足下列两个条件: ① m.n∈1,2.-,K ② (n^ 2-mn-m^2)^2=1 ...

  2. POJ 2828 线段树 逆序插入

    思路: 1.线段树 逆着插入就OK了 2.块状链表 (可是我并不会写) //By SiriusRen #include <cstdio> #include <cstring> ...

  3. SparkCore基础(一)

    * SparkCore基础(一) 学习Spark,首先要熟悉Scala,当然你说你会Python或者Java能不能玩Spark?能!但是不推荐,首推Scala,因为Scala非常便捷,而且Scala有 ...

  4. 用LinkedList模拟Stack功能

    集合体系在Java中比较重要,整个集合体系是在JDK1.2版本后出现,Collection作为整个体系的顶层,拥有整个体系通用的功能.对于其下面的小弟,也是各有千秋.下面就一道面试题来看看Linked ...

  5. tomcat web容器工作原理

    Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码.Web容器的工作过程在下面 ...

  6. Debian9.5 WPS for Linux字体配置(字体缺失解决办法)

    启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 具 ...

  7. 大数问题(相加) A + B

    I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum o ...

  8. [SCOI2008]着色方案 递推 记忆化搜索

    我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ ...

  9. Git 内部原理 - (5)引用规格 (6) 传输协议

    引用规格 纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但这种映射可以更复杂. 假设你添加了这样一个远程版本库: $ git remote add origin https://g ...

  10. 装了ubuntu后笔记本电脑的无线网卡用不了,怎么设置?

    百度经验的一篇文章 http://jingyan.baidu.com/article/ca2d939dd4f1b4eb6c31ce09.html 点击右上角的齿轮,选择“系统设置”   点击“软件和更 ...