Swift 基本語法

在上一章節(jié)中我們已經(jīng)講到如何創(chuàng)建 Swift 語言的 "Hello, World!" 程序∮拥恚現(xiàn)在我們來復(fù)習(xí)下耗拓。

如果創(chuàng)建的是 OS X playground 需要引入 Cocoa :

import Cocoa

/* 我的第一個 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),接下來我們來詳細說明結(jié)構(gòu)的組成部分帆离。

Swift 引入

我們可以使用 import 語句來引入任何的 Objective-C 框架(或 C 庫)到 Swift 程序中。例如 import cocoa 語句導(dǎo)入了使用了 Cocoa 庫和API结澄,我們可以在 Swift 程序中使用他們哥谷。

Cocoa 本身由 Objective-C 語言寫成,Objective-C 又是 C 語言的嚴格超集麻献,所以在 Swift 應(yīng)用中我們可以很簡單的混入 C 語言代碼们妥,甚至是 C++ 代碼。

Swift 標記

Swift 程序由多種標記組成勉吻,標記可以是單詞监婶,標識符,常量,字符串或符號惑惶。例如以下 Swift 程序由三種標記組成:

print("test!")

以上語句由 3 個符號組成:單詞( print )煮盼、符號( ( )、字符串( "test" )带污。

print

(

"test!"

)

注釋

Swift的注釋與C語言極其相似僵控,單行注釋以兩個反斜線開頭:

//這是一行注釋

多行注釋以/*開始,以*/結(jié)束:

/* 這也是一條注釋鱼冀,

但跨越多行 */

與 C 語言的多行注釋有所不同的是报破,Swift 的多行注釋可以嵌套在其他多行注釋內(nèi)部。寫法是在一個多行注釋塊內(nèi)插入另一個多行注釋千绪。第二個注釋塊封閉時充易,后面仍然接著第一個注釋塊:

/* 這是第一個多行注釋的開頭

/* 這是嵌套的第二個多行注釋 */

這是第一個多行注釋的結(jié)尾 */

多行注釋的嵌套是你可以更快捷方便的注釋代碼塊,即使代碼塊中已經(jīng)有了注釋荸型。

分號

與其它語言不同的是盹靴,Swift不要求在每行語句的結(jié)尾使用分號(;),但當(dāng)你在同一行書寫多條語句時帆疟,必須用分號隔開:

import Cocoa

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

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

標識符

標識符就是給變量鹉究、常量、方法踪宠、函數(shù)自赔、枚舉、結(jié)構(gòu)體柳琢、類绍妨、協(xié)議等指定的名字。構(gòu)成標識符的字母均有一定的規(guī)范柬脸,Swift語言中標識符的命名規(guī)則如下:

區(qū)分大小寫他去,Myname與myname是兩個不同的標識符;

標識符首字符可以以下劃線(_)或者字母開始倒堕,但不能是數(shù)字灾测;

標識符中其他字符可以是下劃線(_)、字母或數(shù)字垦巴。

例如: userName媳搪、User_Name、_sys_val骤宣、身高等為合法的標識符秦爆,而2mail、room#和class為非法的標識符憔披。

注意:Swift中的字母采用的是Unicode編碼[1]等限。Unicode叫做統(tǒng)一編碼制爸吮,它包含了亞洲文字編碼,如中文望门、日文形娇、韓文等字符,甚至是我們在聊天工具中使用的表情符號

如果一定要使用關(guān)鍵字作為標識符怒允,可以在關(guān)鍵字前后添加重音符號(`)埂软,例如:

關(guān)鍵字

關(guān)鍵字是類似于標識符的保留字符序列,除非用重音符號(`)將其括起來纫事,否則不能用作標識符勘畔。關(guān)鍵字是對編譯器具有特殊意義的預(yù)定義保留標識符。常見的關(guān)鍵字有以下4種丽惶。

與聲明有關(guān)的關(guān)鍵字

class deinit enum extension

func import init internal

let operator private protocol

public static struct subscript

typealias var

與語句有關(guān)的關(guān)鍵字

break case continue default

do else fallthrough for

if in return switch

where while

表達式和類型關(guān)鍵字

as dynamicType false is

nil self Self super

true _COLUMN_ _FILE_ _FUNCTION_

_LINE_

在特定上下文中使用的關(guān)鍵字

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

意思大概是等號直接跟在前面或后面這種用法是保留的奕巍。

下面的代碼還是會報錯(繼續(xù)注意空格):

let a = 1+ 2

錯誤信息是:

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

這是因為Swift認為到1+這個語句就結(jié)束了,2就是下一個語句了儒士。

只有這樣寫才不會報錯:

let a = 1 + 2;? // 編碼規(guī)范推薦使用這種寫法

let b = 3+4 // 這樣也是OK的

Swift 字面量

所謂字面量的止,就是指像特定的數(shù)字,字符串或者是布爾值這樣着撩,能夠直接了當(dāng)?shù)刂赋鲎约旱念愋筒樽兞窟M行賦值的值诅福。比如在下面:

42? ? ? ? ? ? ? ? // 整型字面量

3.14159? ? ? ? ? ? // 浮點型字面量

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

true? ? ? ? ? ? ? // 布爾型字面量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拖叙,隨后出現(xiàn)的幾起案子氓润,更是在濱河造成了極大的恐慌,老刑警劉巖薯鳍,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖气,死亡現(xiàn)場離奇詭異,居然都是意外死亡挖滤,警方通過查閱死者的電腦和手機崩溪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壶辜,“玉大人悯舟,你說我怎么就攤上這事担租≡颐瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岭参。 經(jīng)常有香客問我反惕,道長,這世上最難降的妖魔是什么演侯? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任姿染,我火速辦了婚禮,結(jié)果婚禮上秒际,老公的妹妹穿的比我還像新娘悬赏。我一直安慰自己,他們只是感情好娄徊,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布闽颇。 她就那樣靜靜地躺著,像睡著了一般寄锐。 火紅的嫁衣襯著肌膚如雪兵多。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天橄仆,我揣著相機與錄音剩膘,去河邊找鬼。 笑死盆顾,一個胖子當(dāng)著我的面吹牛怠褐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椎扬,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惫搏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚕涤?” 一聲冷哼從身側(cè)響起筐赔,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揖铜,沒想到半個月后茴丰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡天吓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年贿肩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龄寞。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡汰规,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出物邑,到底是詐尸還是另有隱情溜哮,我是刑警寧澤滔金,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站茂嗓,受9級特大地震影響餐茵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜述吸,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一忿族、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸仔蝌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間噪伊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工氮唯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鉴吹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓惩琉,卻偏偏與公主長得像豆励,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞒渠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 如果創(chuàng)建的是 OS X playground 需要引入 Fundation 如果我們想創(chuàng)建 iOS playgro...
    kled_net閱讀 493評論 0 0
  • 常量&變量 什么是常量和變量 在Swift中規(guī)定:在定義一個標識符時必須明確說明該標識符是一個常量還是變量 使用l...
    去兜風(fēng)嘍閱讀 566評論 0 0
  • 一良蒸、基本認識 Swift中如何導(dǎo)入框架 定義標識符:let/var 標識符的名稱 : 標識符的數(shù)據(jù)類型 = 值 數(shù)...
    云上的彩閱讀 192評論 0 0
  • YES 2014WWDC發(fā)布 常量和變量使用注意 在實際過程中,建議先定義常量,如果需要修改再改變?yōu)樽兞?更加安全...
    南馮閱讀 546評論 0 0
  • + (void)multiStringWithName:(NSString *)names,... { // 打...
    飛雨2013閱讀 131評論 0 0