在前一章節(jié)中我們已經(jīng)看到了 Swift 的開發(fā)環(huán)境設(shè)置。 讓我們?cè)俅伍_始用下面的 OS Xplayground 創(chuàng)建的 Hello,World!程序 ,它包括 import Cocoa ,如下所示:
import Cocoa /* My first program in Swift */ var myString = "Hello, World!" println(myString)
如果為 iOS playground 創(chuàng)建相同的程序,然后將包括 import UIKit 語句,程序看起來如下:
import UIKit var myString = "Hello, World!" println(myString)
當(dāng)我們使用適當(dāng)playground運(yùn)行上面的程序,得到以下結(jié)果:
Hello, World!
現(xiàn)在來看看Swift程序的基本結(jié)構(gòu),因此,這是了解 Swift 編程語言的基本構(gòu)建塊。
可以使用 import 語句來直接導(dǎo)入任何 Objective-C框架(或C庫)到 Swift程序。例如上述 import cocoa 語句使所有 Cocoa 庫,APIs,并形成了所有OS X開發(fā)層,在運(yùn)行時(shí)可用在 Swift。
Cocoa在Objective-C是C的一個(gè)超集實(shí)現(xiàn),所以很容易將C甚至C++混合到 Swift 應(yīng)用。
Swift程序由各種令牌組成,令牌可以是一個(gè)關(guān)鍵字,標(biāo)識(shí)符,常量,字符串文字或符號(hào)。例如,下面的Swift語句由三個(gè)令牌組成:
println("test!")
The individual tokens are:
println
(
"test!"
)
注釋就像幫助文本在 Swift 程序中,它們被編譯器忽略。多行注釋以/*開頭并以*/字符結(jié)束,如下圖所示:
/* My first program in Swift */
Swift可以嵌套多行注釋。以下是Swift有效的注釋:
/* My first program in Swift is Hello, World! /* Where as second program is Hello, Swift! */
單個(gè)注釋使用//在注釋的開頭寫入。
// My first program in Swift ,這是一行注釋
Swift不要求必須使用分號(hào)(;)在代碼每個(gè)語句后面,雖然其可選的,但是如果使用分號(hào),然后編譯器不會(huì)有什么影響。
但是,如果在同一行,用分號(hào)作為分隔符分為多個(gè)語句, 否則編譯器將引發(fā)語法錯(cuò)誤??梢灾貙懮厦娴腍ello,World!程序如下:
import Cocoa /* My first program in Swift */ var myString = "Hello, World!"; println(myString)
Swift 標(biāo)識(shí)符是用于識(shí)別一個(gè)變量,函數(shù),或任何其它用戶定義的項(xiàng)目的名稱。一個(gè)標(biāo)識(shí)符開始于字母A到Z或a到z或下劃線_后跟零個(gè)或多個(gè)字母,下劃線和數(shù)字(0?9)。
Swift不允許標(biāo)識(shí)符中有標(biāo)點(diǎn)字符,如@,$和%。Swift 是區(qū)分大小寫的編程語言。因此,Manpower和manpower 在Swift中是兩個(gè)不同的標(biāo)識(shí)符。下面是可接受的標(biāo)識(shí)的一些例子:
Azad zara abc move_name a_123 myname50 _temp j a23b9 retVal
要使用保留字作為標(biāo)識(shí)符,需要在標(biāo)識(shí)符之前和之后把它用反引號(hào)(')引用起來。例如,class 不是一個(gè)有效標(biāo)識(shí)符,但`class`是有效的。
以下關(guān)鍵字在 Swift 中保留。這些保留字不要用作常量或變量或任何其它標(biāo)識(shí)符名稱,除非它們用反引號(hào)轉(zhuǎn)義:
| 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 |
|
|
僅包含空格,可能帶有注釋行,被稱為一個(gè)空行,Swift編譯器完全忽略它。
空格是 Swift 用來描述空格,制表符,換行符和注釋術(shù)語??崭穹指粢粋€(gè)聲明為另一部分,使編譯器能夠查明在一個(gè)聲明中的元素,如int,結(jié)束和下一個(gè)元素開始。因此,在下面的語句:
var age
var 和 age 之間必須有至少一個(gè)空白字符(通常是一個(gè)空間),以便編譯器能夠區(qū)分它們。另外,下面的語句:
int fruit = apples + oranges //get the total fruits
fruit 和=之間,或=和apples 空格字符不是必須的,但如果希望使用是以可讀性為目的,可以加入一些空格。
字面量是整數(shù),浮點(diǎn)數(shù)或字符串類型的一個(gè)值的源代碼表示。以下是字面值的例子:
92 // Integer literal 4.24159 // Floating-yiibai literal "Hello, World!" // String literal