Swift 基本语法

在上一章节中我们已经讲到如何创建 Swift 语言的 "Hello, World!" 程序。现在我们来复习下。

如果创建的是 OS X playground 需要引入 Cocoa :

import Cocoa

/* 我的第一个 Swift 程序 */

var myString = "Hello, World!"

print(myString)

如果我们想创建 iOS playground 则需要引入 UIKit :

import UIKit

var myString = "Hello, World!"

print(myString)

执行以上程序,输出结果为:

Hello, World!

以上代码即为 Swift 程序的基本结构,接下来我们来详细说明结构的组成部分。

Swift 引入

我们可以使用 import 语句来引入任何的 Objective-C 框架(或 C 库)到 Swift 程序中。例如 import cocoa 语句导入了使用了 Cocoa 库和API,我们可以在 Swift 程序中使用他们。

Cocoa 本身由 Objective-C 语言写成,Objective-C 又是 C 语言的严格超集,所以在 Swift 应用中我们可以很简单的混入 C 语言代码,甚至是 C++ 代码。

Swift 标记

Swift 程序由多种标记组成,标记可以是单词,标识符,常量,字符串或符号。例如以下 Swift 程序由三种标记组成:

print("test!")

以上语句由 3 个符号组成:单词( print )、符号( ( )、字符串( "test" )。

print

(

"test!"

)

注释

Swift的注释与C语言极其相似,单行注释以两个反斜线开头:

//这是一行注释

多行注释以/*开始,以*/结束:

/* 这也是一条注释,

但跨越多行 */

与 C 语言的多行注释有所不同的是,Swift 的多行注释可以嵌套在其他多行注释内部。写法是在一个多行注释块内插入另一个多行注释。第二个注释块封闭时,后面仍然接着第一个注释块:

/* 这是第一个多行注释的开头

/* 这是嵌套的第二个多行注释 */

这是第一个多行注释的结尾 */

多行注释的嵌套是你可以更快捷方便的注释代码块,即使代码块中已经有了注释。

分号

与其它语言不同的是,Swift不要求在每行语句的结尾使用分号(;),但当你在同一行书写多条语句时,必须用分号隔开:

import Cocoa

/* 我的第一个 Swift 程序 */

var myString = "Hello, World!"; print(myString)

标识符

标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等指定的名字。构成标识符的字母均有一定的规范,Swift语言中标识符的命名规则如下:

区分大小写,Myname与myname是两个不同的标识符;

标识符首字符可以以下划线(_)或者字母开始,但不能是数字;

标识符中其他字符可以是下划线(_)、字母或数字。

例如: userName、User_Name、_sys_val、身高等为合法的标识符,而2mail、room#和class为非法的标识符。

注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号

如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`),例如:

关键字

关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符。关键字是对编译器具有特殊意义的预定义保留标识符。常见的关键字有以下4种。

与声明有关的关键字

class deinit enum extension

func import init internal

let operator private protocol

public static struct subscript

typealias var

与语句有关的关键字

break case continue default

do else fallthrough for

if in return switch

where while

表达式和类型关键字

as dynamicType false is

nil self Self super

true _COLUMN_ _FILE_ _FUNCTION_

_LINE_

在特定上下文中使用的关键字

associativity convenience dynamic didSet

final get infix inout

lazy left mutating none

nonmutating optional override postfix

precedence prefix Protocol required

right set Type unowned

weak willSet

Swift 空格

Swift语言并不是像C/C++,Java那样完全忽视空格,Swift对空格的使用有一定的要求,但是又不像Python对缩进的要求那么严格。

在Swift中,运算符不能直接跟在变量或常量的后面。例如下面的代码会报错:

let a= 1 + 2

错误信息是:

error: prefix/postfix '=' is reserved

意思大概是等号直接跟在前面或后面这种用法是保留的。

下面的代码还是会报错(继续注意空格):

let a = 1+ 2

错误信息是:

error: consecutive statements on a line must be separated by ';'

这是因为Swift认为到1+这个语句就结束了,2就是下一个语句了。

只有这样写才不会报错:

let a = 1 + 2;  // 编码规范推荐使用这种写法

let b = 3+4 // 这样也是OK的

Swift 字面量

所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。比如在下面:

42                // 整型字面量

3.14159            // 浮点型字面量

"Hello, world!"    // 字符串型字面量

true              // 布尔型字面量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 如果创建的是 OS X playground 需要引入 Fundation 如果我们想创建 iOS playgro...
    kled_net阅读 490评论 0 0
  • 常量&变量 什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用l...
    去兜风喽阅读 555评论 0 0
  • 一、基本认识 Swift中如何导入框架 定义标识符:let/var 标识符的名称 : 标识符的数据类型 = 值 数...
    云上的彩阅读 185评论 0 0
  • YES 2014WWDC发布 常量和变量使用注意 在实际过程中,建议先定义常量,如果需要修改再改变为变量(更加安全...
    南冯阅读 532评论 0 0
  • + (void)multiStringWithName:(NSString *)names,... { // 打...
    飞雨2013阅读 123评论 0 0