Swift - 基本語法(一)

寫在前面

1.Swift保持了OC的參數命名系統刁绒,但是在語法上更簡潔嗓袱,可讀性更強 代碼更容易被維護
2.Swift安全性更高
3.Swift在編譯和運行上都經過了更精確的優(yōu)化 所以相比更快
....

一.常量和變量

常量用let來表示歌粥,一旦賦值就不能再被改變
變量用var來表示植阴,賦值之后還可以再改變
如:
let number1 = 100
var number2 = 99
Swift是一門類型安全(type safety)的語言酷愧,雖然沒有確定變量類型 其實已經有類型了

Q:Swift如何來顯式聲明類型呢?

var str:String // 表示顯式聲明了str是String類型的變量
str = "Sunshine"

var num1, num2, num3:Double // num1, num2, num3都是Double類型的變量
num1 = 1.0
num2 = 2.0
num3 = 3.0

// Double是64位的浮點數,Float是32位的浮點數,一般來說Double精確到小數點后面15位,Float精確到小數點后面6位

let binaryInt:Int = 0b1001 // 0b:二進制的數據前綴

Q:強制類型轉換互例?
強制類型轉換:在需要轉換的變量之前加上(需要轉換的類型),轉換的類型需要用()

let number_a:Int = 3
let number_b:Double = 0.1415926
let pi:Double = (Double)(number_a) + number_b

Q:字符串拼接筝闹?

let 姓名:String = "Sunshine"
姓名 + "媳叨,你好!" // Sunshine关顷,你好糊秆!

二.布爾類型和if語句

布爾值用truefalse來表示,全是小寫
if語句的{}必不可少议双,即使{}里面只有一句話也不能省略
Swift里面沒有把非0的值作為真的這種說法

let imtruevar = true
let imfalsevar = false
if imtruevar {
    print("I am true")
}else {
    print("I am false")
}

if 3 + 4 == 7 {
    print("3 + 4 =7")
}else {
    print("I am false")
}

三.Swift元組 Tuples

元組:將多個不同的值集合成一個數據 如(true,"Sunhsine","女"),它是Swift新引進的一種新的數據類型
元組的特點:1 - 可以有任意多個值
2 - 不同的值可以是不同的類型

// 第一種寫法
let tuplesregisterResult = (true, "Sunshine", "女")
let (isRegisterSucc, name, sex) = tuplesregisterResult
isRegisterSucc // true
name // Sunshine
sex // 女

// 第二種寫法
let tuplesregisterResult = (isRegisterSucc:true, name:"Sunshine", sex:"女")
tuplesregisterResult.isRegisterSucc // true
tuplesregisterResult.name // Sunshine
tuplesregisterResult.sex // 女

在提取元組數據時可能對某部分數據不關心痘番,可以使用下劃線_忽略部分數據
如:

let loginResult = (true, "sunshine")
let (isloginsucc, _) = loginResult
if isloginsucc {
    print("登錄成功")
}

Q:元組如何顯式的聲明數據類型?
,隔開平痰,聲明每個變量的類型汞舱,如:
let connectResult:(Int, String) = (404, "Not Found")

四.可選型 Optionals

Optionals:可選值
1 - 或者是一個值 或者是沒有值
2 - 沒有值時為nil
Q:如何顯式的將一個變量聲明成可選值?
var imoptionalvariable:Int?

let userInput = "sunshine";
var age = Int(userInput) // 把userInput轉化為Int
// age! 表示age一定是有值的 就用宗雇!
if age != nil {
//    print("your age is \(age!)")
//    print("your age is" + String(age)) // 強制類型轉換不能針對可選值 所以這樣寫會出錯
    // age! 可以叫做是可選型的解包
     print("your age is" + String(age!))   
}else {
    print("inpunt is not avariable")
}

let string_a:String! = "Sunshine" // 表示在聲明的時候就明確表示string_a是有值的昂芜。

五.基礎運算符

let a = 10
let b = 5
var c = 0

a + b
a - b
a * b
a / b
a % b
// ? : :  //  條件運算符

//  這也是Swift更安全的一個體現
Int.max + 1 // 報錯 溢出的錯誤
Int.min - 1 // 報錯
// 其他運算符:a === b a !== b

六.聚合運算符

// a ?? b  等價于: a != nil ? a! : b
// 聚合運算符有兩個要求: 1 - a必須是可選類型  
                      2 - b的類型必須是a相同的a必須是可選類型
var userName:String?
userName = "sunshine"
if userName != nil {
    print("Hello my name is \(userName)")
}else {
    print("Hello guest")
}

// 等價于下面的寫法
let outputName:String = userName != nil ? userName! : "guest"
print("Hello" + outputName)

// 等價于下面的第一種寫法
let outputName:String = userName ?? "guest"
print("Hello" + outputName)

七.區(qū)間運算符和for - in循環(huán)

// 閉區(qū)間[a, b]  等價于  a...b
// 前閉后開區(qū)間[a,b)  等價于  a..<b
for index in 1...10 {
    index // index 是個常量
}

八.邏輯運算符

!a
a && b
a || b

九.String和Character

let str1 = "I am a immutable string" // 表示不可變字符串
var str2 = "I am mutable string"http:// 可變字符串

str2 = "Sunshine"
str2 += ",你好赔蒲!" // 打印的結果是:Sunshine泌神,你好

Q:如何定義一個空字符串?

var empty_str1 = ""
var empty_str2 = String()
empty_str1 += "Sunshine" // empty_str1變成Sunshine
empty_str1.isEmpty // 來判斷當前字符串是否為空

使用for - in循環(huán)循環(huán)來遍歷字符串

for c in empty_str2 {
    print(c) // 會打印出字符串中的每個字符
}

聲明一個Character的數據類型

var ch:Character = "s" // 此時的ch就是Character的數據類型 里面只能有一個字符
empty_str2.append(ch)
empty_str2.appending("hello")
PS:允許兩個字符串相加 但是不允許字符串和Character類型的相加

計算字符串的長度
str1.characters.count

十.String的基本操作

字符串插值:(要插入的字符串)

var inter_str1 = "Sunshine"
var inter_str2 = "你好"
print("\(inter_str1),\(inter_str2)")// 打印結果:Sunshine,你好

字符串的比較

let com_str1 = "abc"
let com_str2 = "abc"
let com_str3 = "accd"
let com_str4 = "abcd"
com_str1 == com_str2 // 結果為true
// 使用字典序來比較字符串
com_str1 < com_str3 // 結果為true
// 注意:使用字典序是不用看它的長度的
com_str3 > com_str4 // 結果為true

字符串的前綴和后綴

// hasPrefix:是否有前綴
// hasSuffix:是否有后綴

let arrs = ["第一章:1.1","第一章:1.2","第一章:1.3","第二章:2.1","第二章:2.2","第二章:2.3","第二章:2.4","第二章:2.5","第三章:3.3","第三章:3.3","第三章:3.3"]
var count = 0
for name in arrs {
    if name.hasPrefix("第二章") {
        count += 1 // count++ 在Swift3之后已經被廢棄 不能使用
    }
}
print("第二章總的章數 - \(count)") //  打印結果:第二章總的章數 - 5
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舞虱,隨后出現的幾起案子欢际,更是在濱河造成了極大的恐慌,老刑警劉巖矾兜,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件损趋,死亡現場離奇詭異,居然都是意外死亡椅寺,警方通過查閱死者的電腦和手機舶沿,發(fā)現死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來配并,“玉大人,你說我怎么就攤上這事高镐「刃” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵嫉髓,是天一觀的道長观腊。 經常有香客問我邑闲,道長,這世上最難降的妖魔是什么梧油? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任苫耸,我火速辦了婚禮,結果婚禮上儡陨,老公的妹妹穿的比我還像新娘褪子。我一直安慰自己,他們只是感情好骗村,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布嫌褪。 她就那樣靜靜地躺著,像睡著了一般胚股。 火紅的嫁衣襯著肌膚如雪笼痛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天琅拌,我揣著相機與錄音缨伊,去河邊找鬼。 笑死进宝,一個胖子當著我的面吹牛刻坊,可吹牛的內容都是我干的。 我是一名探鬼主播即彪,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼紧唱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了隶校?” 一聲冷哼從身側響起漏益,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎深胳,沒想到半個月后绰疤,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡舞终,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年轻庆,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敛劝。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡余爆,死狀恐怖,靈堂內的尸體忽然破棺而出夸盟,到底是詐尸還是另有隱情蛾方,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桩砰,受9級特大地震影響拓春,放射性物質發(fā)生泄漏。R本人自食惡果不足惜亚隅,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一硼莽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煮纵,春花似錦懂鸵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隘擎,卻和暖如春殴穴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背货葬。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工采幌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人震桶。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓休傍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹲姐。 傳聞我的和親對象是個殘疾皇子磨取,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發(fā)的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,304評論 1 27
  • 如果創(chuàng)建的是 OS X playground 需要引入 Fundation 如果我們想創(chuàng)建 iOS playgro...
    kled_net閱讀 493評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,814評論 1 10
  • 人需要一個個夠大夠高的舞臺去歷練和展示自我柴墩。如美國普林斯頓大學動物劉錦程忙厌,對外漢語教師都可以做到非常成功的程度。
    自由之我閱讀 195評論 0 0
  • 當我得知自己可以去臺灣旅游的時候內心是狂喜的江咳。我第一時間想到的不是別的逢净,就是美食。多少年歼指,當身邊去過臺灣的朋友提起...
    空想之道閱讀 571評論 0 0