????????蘋果公司在今年的WWDC大會上,除了發布了iOS8和Max OS X 10.10之外,還發布了一個新的編程語言Swift。不得不說,Swift有較大的轉變,也使編程變得更加容易了,下面介紹了Swift的常量和變量的定義,基本控制語句的使用:
需要注意的是:Swift只能在Xcode 6 Beta版中運行,Xcode 6 目前最新的是Beta 7,大家可以通過以下鏈接下載:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_7_apzr94/xcode_6_beta_7.dmg
????????下載完成后打開。
一、創建第一個Swift工程:
1.創建一個Swift工程:
????如下圖所示,打開Xcode 6之后,會出現一個歡迎界面,選擇第二項:Create a new Xcode project(創建一個新的Xcode工程)
2.在Choose a template for your new project:頁面,選擇OS X下面的Application,然后選擇選擇右面的Command Line Tool,然后點擊Next(如下圖所示):
3.在Choose options for your new project:界面,第一個輸入工程名字,然后記得在Language中選擇Swift,然后繼續next(如圖所示):
4.選擇路徑,這個不用多說了,然后create(如圖所示):
5.然后你會看到下面的界面,點擊左邊工程的下三角,出現了一個main.swift文件,點擊之后如圖所示:
6.點擊左上角的運行按鈕(快捷鍵:command + R),你會發現控制臺打印出了所有編程語言的第一句話:Hello,World,至此,Swift工程創建完畢。
二、Swift的基本語法:
下面來介紹Swift的基本用法(在main.swift中的代碼):
import?Foundationprintln("Hello,?World!")
println("你好,世界!")//?定義一個常量,使用關鍵字“let”
//?在Swift中,幾乎對所有的基本數據類型或者是對象類型使用結構體進行了重寫
let?haiDian?=?"海淀"
//?let?haiDian:?String?=?"海淀"????????//?在Swift中,系統會幫你做類型推斷,上一行的代碼和此行一樣
//?\(變量名)把變量或者常量名轉化為字符串進行輸出
println("haiDian?=?\(haiDian)")?//?"\(變量/常量名)"?可以把變量/常量轉化為字符串輸出
//直接輸出
println(haiDian)//?定義一個變量,使用關鍵字“var”
var?hello?=?"你好,"
hello?=?hello?+?haiDian?????//?字符串重載:字符串拼接
println("hello??=?\(hello)")//?Swift幾乎支持所有的Unicode編碼的字符(除了數學中的符號、箭頭和橫線)來對變量/常量進行命名
let?狗?=?"Dog,"
println(狗)var??=?狗?+?"愛你"
println()//?定義一個整型?(類型推斷)
var?a?=?10??//?定義一個整型,其實這個語句,編譯器會幫我們推斷為:var?a:?Int?=?10,格式為:“變量/常量名:?類型”,在Swift中整型是Int,如果系統是32位,那么這個變量就是Int32,如果系統是64位,那么就是Int64,如果我定義一個8位的整型樹,那么需要顯式的指定為Int8:
var?b:?Int8?=?12????????//?顯式指定Int的位數var?c?=?12.0????????????//?在Swift中,浮點型數據默認是Double
var?d?=?Double(b)?+?c???//?在Swift中,不支持隱式轉換,如果想把兩個不同類型的數據進行操作,那么需要顯式的轉換其類型,轉換格式為:“類型名(常量/變量名)”//?元組,元組借鑒了關系型數據庫里面的概念,關系型數據庫里面的一條數據就是一個元組,元組中可以存放不同類型的數據,和結構體類似,但是結構體需要先進行聲明,元組可以直接創建使用
//?定義一個元組
let?errorCode?=?(404,?"Not?Fount")??????????//?這是一個(Int,?String)類型的元組,相當于:let?errorCode:?(Int,?String)?=?(404,?"Not?Fount")
//?元素分解(取出元組中的元素)
//?取出元組里面的元素(通過下標取出)
println("errorCode?=?\(errorCode.0),?errorMessage?=?\(errorCode.1)")//?可以在創建元組的時候,給元組里面的元素聲明類型名稱
let?errorCodeA?=?(errorCode:?404,?errorMessage:?"Not?Found")
//?通過類型名稱取出元素
println("errorCode?=?\(errorCodeA.errorCode),?errorMessage?=?\(errorCodeA.errorMessage)")
println(errorCodeA)//?如果忽略元組對應位置的元素,那么可以使用“_”
let?(statusCode,?_)?=?errorCodeA
println("statusCode?=?\(statusCode)")//?數組:在Swift數組中,只能存放同一類型的數據,這樣才能對數組進行存取操作。如果數據類型不是相同的,則會轉換為NSArray來處理//?使用var來聲明一個可變數組,
var?nameArrayA?=?["張三",?"李四",?"王五"]???????//?相當于:var?nameArrayA:?String[]?=?["張三",?"李四",?"王五",?"趙六"]
println("nameArrayA?=?\(nameArrayA)")//?定義一個空的數組
var?someValues?=?[Int]()????????//?聲明了一個空的數組,數組里面的元素都是Int,在Xcode6?Beta4之前得版本,寫法是:Int[]()
var?nameArrayC?=?["Hello",?123]//?往數組中添加元素
nameArrayA.append("趙六")
println("nameArrayA?=?\(nameArrayA)")//?替換數組里面的元素
nameArrayA[0]?=?"第一個"
println(nameArrayA)//?刪除數組里面的元素
nameArrayA.removeAtIndex(0)
println(nameArrayA)//?刪除最后一個元素
nameArrayA.removeLast()
println(nameArrayA)//?定義不可變數組,數組的可變和不可變是通過let和var進行聲明的,在Xcode6?beta4之前,不可變數組(常量數組)不能添加和刪除元素,但是可以對元素進行更改,但是在Xcode6?Beta4之后,常量數組也不能更改里面的元素
let?nameArrayD?=?["張三",?"李四",?"王五"]
//?nameArrayD[0]?=?"替換"
for?name?in?nameArrayD?{println("name?=?\(name)")
}//?既取出數組里面的元素,又得到元素所在的下標,需要使用?enumerate(數組名)?方法
for?(index,?name)?in?enumerate(nameArrayD)?{println("index?=?\(index),?name?=?\(name)")
}//?字典,在Swift中,字典所有的key是同一個類型,所有的Value是同一個類型,key和value可以是不同的類型,如果不是相應的同一類型,則自動轉換為OC中的NSDictionary
//?聲明一個空的字典
var?dictionaryStudent?=?Dictionary<String,?Float>()var?person?=?["name":?"輝哥",?"sex":?"男"]?????????//?相當于:var?person:?Dictionary<Sting,?String>?=?["name":?"輝哥",?"sex":?"男"]
println("person?=?\(person)")???????????//?字典的打印是無序的//?往字典里面添加鍵值
person["habit"]?=?"抽煙"
println("person?=?\(person)")
//?如果字典里面沒有這個key,那么直接添加,如果已經存在這個key了,那么直接把之前的value替換掉
person["name"]?=?"波哥"
println("person?=?\(person)")
//?更新某個key對應的value,使用?updateValue(value,?forKey:?key)?進行更新的時候,會返回更新之前的舊值
let?oldValue?=?person.updateValue("崔哥",?forKey:?"name")
println("person?=?\(person),?oldValue?=?\(oldValue)")
//?字典的遍歷
for?(key,?value)?in?person?{println("key?=?\(key),?value?=?\(value)")
}//?字典的可變和不可變也是通過let和var進行控制的,不可以對常量字典進行更新//?控制語句:if,if...else,?while,?do...while,switch...case
var?num?=?3
var?condition?=?true
//if?num?{????????????//?不加小括號,后面的判斷條件只能是Bool類型,整型和其它的類型都不可以
//????println("這是整型")
//}
if?condition?{println("這是一個Bool值")
}for?var?i?=?0;?i?<?10;?i++?{println("i?=?\(i)")
}for?j?in?0..<3?{?????????//?“..<”包括左邊的,不包括右邊的,在Xcode6?Beta4之前的版本,使用“..”println("j?=?\(j)")
}for?j?in?0...4?{????????//?“...”既包括左邊的,又包括右邊的println("j?=?\(j)")
}//?switch,在Swift中,對switch進行了很大的更改,默認不需要寫break
var?number?=?20
switch?number?{
case?10:println("number?=?10")
case?20:println("number?=?20")
default:println("other")
}//?如果想強制執行下一條語句的話,需要使用fallthrough關鍵字,本語句必須是滿足條件的
var?numberA?=?10
switch?numberA?{
case?10:println("number?=?10")fallthrough
case?20:println("number?=?20")
//????fallthrough?????????????//?相當于OC中不寫break的效果
default:println("other")}//?case是一個范圍
var?numberB?=?12
switch?numberB?{
case?1..<10:println("這是一位數")
case?10..<100:println("這是兩位數")
default:println("這是其它數字")
}
//?case的范圍可以交叉,但是只執行第一個滿足條件的case語句
var?numberC?=?12
switch?numberC?{
case?1..<20:println("在1~20之間")
case?10..<100:println("在10~100之間")
default:println("其它")
}//?可以進行雙重判定(使用?“where?判定條件”關鍵字)
var?numberD?=?13
switch?numberD?{
case?1..<20?where?numberD?<?15:println("numberD?=?12")
case?10..<100:println("兩位數")
default:println("其它數字")
}//?判斷點在坐標系的什么位置,?“_”?:忽略元組中對應位置的值
var?point?=?(3,?5)
switch?point?{
case?(0,?0):println("原點")
case?(_,?0):println("X軸")
case?(0,?_):println("Y軸")
default:println("在象限內")
}var?pointA?=?(0,?4)
switch?pointA?{
case?(0,?0):println("原點")
case?(let?x,?0):println("X軸,?x?=?\(x)")
case?(0,?let?y):println("Y軸,?y?=?\(y)")
default:println("在象限內")
}//?optionals,?可選變量,如果使用optionals對變量進行聲明,那么這個變量的值可能是空(nil)。??(需要注意拆包/解包)
//?在Swift中只有nil表示空,沒有Nil,NULL,null,NSNullvar?value:?Int??//?“?”表示這是一個可選變量,值可能為nillet?numberStr?=?"123456.3"
value?=?numberStr.toInt()
if?nil?!=?value?{???????????//在Xcode6?Beta6之后,Int?不能作為判斷條件,之前可以(直接value)println("有值:value?=?\(value)")
}var?valueA?=?21
let?valueB?=?valueA?+?value!????????????//?拆包/解包,如果沒有值,則不能解包
println("valueB?=?\(valueB)")
????????其中我把各個語句的解釋都放到代碼中了,大家可以直接粘貼到工程中查看,更加方便學習。
????????以上就是Swift工程的創建和一些基本語句的學習,希望對大家有所幫助。
轉載于:https://blog.51cto.com/winann/1549505
總結
以上是生活随笔為你收集整理的Swift基础:创建第一个Swift工程:Swift的基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。