Swift 語法
如果創(chuàng)建的是 OS X playground 需要引入 Cocoa :
import Cocoa /* 我的第一個(gè) Swift 程序 */ var myString = "Hello, World!" print(myString)
如果我們想創(chuàng)建 iOS playground 則需要引入 UIKit :
import UIKit var myString = "Hello, World!" print(myString)
執(zhí)行以上程序,輸出結(jié)果為:
Hello, World!
以上代碼即為 Swift 程序的基本結(jié)構(gòu),接下來我們來詳細(xì)說明結(jié)構(gòu)的組成部分。
Swift 引入
我們可以使用?import?語句來引入任何的 Objective-C 框架(或 C 庫)到 Swift 程序中。例如?import cocoa?語句導(dǎo)入了使用了 Cocoa 庫和API,我們可以在 Swift 程序中使用他們。
Cocoa 本身由 Objective-C 語言寫成,Objective-C 又是 C 語言的嚴(yán)格超集,所以在 Swift 應(yīng)用中我們可以很簡單的混入 C 語言代碼,甚至是 C++ 代碼。
Swift 標(biāo)記
Swift 程序由多種標(biāo)記組成,標(biāo)記可以是單詞,標(biāo)識(shí)符,常量,字符串或符號(hào)。例如以下 Swift 程序由三種標(biāo)記組成:
print("test!")
以上語句由 3 個(gè)符號(hào)組成:單詞(?print?)、符號(hào)(?(?)、字符串(?"test"?)。
print ( "test!" )
注釋
Swift的注釋與C語言極其相似,單行注釋以兩個(gè)反斜線開頭:
//這是一行注釋
多行注釋以/*開始,以*/結(jié)束:
/* 這也是一條注釋, 但跨越多行 */
與 C 語言的多行注釋有所不同的是,Swift 的多行注釋可以嵌套在其他多行注釋內(nèi)部。寫法是在一個(gè)多行注釋塊內(nèi)插入另一個(gè)多行注釋。第二個(gè)注釋塊封閉時(shí),后面仍然接著第一個(gè)注釋塊:
/* 這是第一個(gè)多行注釋的開頭 /* 這是嵌套的第二個(gè)多行注釋 */ 這是第一個(gè)多行注釋的結(jié)尾 */
多行注釋的嵌套是你可以更快捷方便的注釋代碼塊,即使代碼塊中已經(jīng)有了注釋。
分號(hào)
與其它語言不同的是,Swift不要求在每行語句的結(jié)尾使用分號(hào)(;),但當(dāng)你在同一行書寫多條語句時(shí),必須用分號(hào)隔開:
import Cocoa /* 我的第一個(gè) Swift 程序 */ var myString = "Hello, World!"; print(myString)
標(biāo)識(shí)符
標(biāo)識(shí)符就是給變量、常量、方法、函數(shù)、枚舉、結(jié)構(gòu)體、類、協(xié)議等指定的名字。構(gòu)成標(biāo)識(shí)符的字母均有一定的規(guī)范,Swift語言中標(biāo)識(shí)符的命名規(guī)則如下:
區(qū)分大小寫,Myname與myname是兩個(gè)不同的標(biāo)識(shí)符;
標(biāo)識(shí)符首字符可以以下劃線(_)或者字母開始,但不能是數(shù)字;
標(biāo)識(shí)符中其他字符可以是下劃線(_)、字母或數(shù)字。
例如: userName、User_Name、_sys_val、身高等為合法的標(biāo)識(shí)符,而2mail、room#和class為非法的標(biāo)識(shí)符。
注意:Swift中的字母采用的是Unicode編碼[1]。Unicode叫做統(tǒng)一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字符,甚至是我們?cè)诹奶旃ぞ咧惺褂玫谋砬榉?hào)
如果一定要使用關(guān)鍵字作為標(biāo)識(shí)符,可以在關(guān)鍵字前后添加重音符號(hào)(`),例如:
let `class` = "Runoob"
關(guān)鍵字
關(guān)鍵字是類似于標(biāo)識(shí)符的保留字符序列,除非用重音符號(hào)(`)將其括起來,否則不能用作標(biāo)識(shí)符。關(guān)鍵字是對(duì)編譯器具有特殊意義的預(yù)定義保留標(biāo)識(shí)符。常見的關(guān)鍵字有以下4種。
與聲明有關(guān)的關(guān)鍵字
classdeinitenumextensionfuncimportinitinternalletoperatorprivateprotocolpublicstaticstructsubscripttypealiasvar
與語句有關(guān)的關(guān)鍵字
breakcasecontinuedefaultdoelsefallthroughforifinreturnswitchwherewhile
表達(dá)式和類型關(guān)鍵字
asdynamicTypefalseisnilselfSelfsupertrue_COLUMN__FILE__FUNCTION__LINE_
在特定上下文中使用的關(guān)鍵字
associativityconveniencedynamicdidSetfinalgetinfixinoutlazyleftmutatingnonenonmutatingoptionaloverridepostfixprecedenceprefixProtocolrequiredrightsetTypeunownedweakwillSet
Swift 空格
Swift語言并不是像C/C++,Java那樣完全忽視空格,Swift對(duì)空格的使用有一定的要求,但是又不像Python對(duì)縮進(jìn)的要求那么嚴(yán)格。
在Swift中,運(yùn)算符不能直接跟在變量或常量的后面。例如下面的代碼會(huì)報(bào)錯(cuò):
let a= 1 + 2
錯(cuò)誤信息是:
error: prefix/postfix '=' is reserved
意思大概是等號(hào)直接跟在前面或后面這種用法是保留的。
下面的代碼還是會(huì)報(bào)錯(cuò)(繼續(xù)注意空格):
let a = 1+ 2
錯(cuò)誤信息是:
error: consecutive statements on a line must be separated by ';'
這是因?yàn)镾wift認(rèn)為到1+這個(gè)語句就結(jié)束了,2就是下一個(gè)語句了。
只有這樣寫才不會(huì)報(bào)錯(cuò):
let a = 1 + 2; // 編碼規(guī)范推薦使用這種寫法 let b = 3+4 // 這樣也是OK的
Swift 字面量
所謂字面量,就是指像特定的數(shù)字,字符串或者是布爾值這樣,能夠直接了當(dāng)?shù)刂赋鲎约旱念愋筒樽兞窟M(jìn)行賦值的值。比如在下面:
42 // 整型字面量 3.14159 // 浮點(diǎn)型字面量 "Hello, world!" // 字符串型字面量 true // 布爾型字面量
打印輸出
Swift 使用 print 函數(shù)打印輸出:
print("Runoob") // 輸出 Runoob
print 函數(shù)是一個(gè)全局函數(shù),完整的函數(shù)簽名為:
public func print(items: Any..., separator: String = default, terminator: String = default)
如果我們想讓其不換行輸出,只需要將最后一個(gè)參數(shù)賦值為空字符串即可:
for x in 0...10{ print("\(x) ", terminator: "") } print()
輸出結(jié)果為:
0 1 2 3 4 5 6 7 8 9 10
如果你需要接收用戶的輸入可以使用?readLine():
let theInput = readLine()?Swift 環(huán)境搭建Swift 數(shù)據(jù)類型?
1 篇筆記?寫筆記
???DJ
??233***8135@qq.com
165
let 用于定義常量,定義完后不能修改。
var 用于定義變量,可以修改。
swift可以自動(dòng)識(shí)別屬性類別