swift語法(2)

1.邏輯分支

  • 分支:if/switch/三目運(yùn)算符
  • if
    • if后面的()可以省略
    • swift中必須有明確的真假
      • Bool兩個取值:false/true
      • 沒有非零即真,也沒有非空即真
let a = 20
if a >0{
}else{
}
let score = 88
if score < 0 || score >100{
print("不合理")
}else if score <60{
print("不及格")
}else{
print("優(yōu)秀")
}
  • 三目運(yùn)算符
    • 使用方法和oc是一致的
let m = 30
let n = 20
let result : Int = m > n ? m : n
  • guard的使用
    • swift2.0新增語法
    • 和if語句非常相似,是為了提高程序的可讀性
    • guard語句必須帶有else語句
      • 當(dāng)條件表達(dá)式為true的時候,跳過else語句,執(zhí)行語句組內(nèi)容
      • 當(dāng)條件表達(dá)式為false的時候,執(zhí)行else語句中的內(nèi)容
      • 跳轉(zhuǎn)語句一般是break/return/continue/throw
        • return :結(jié)束執(zhí)行,一般用在方法里
        • break: 跳出循環(huán)
        • continue:跳出本次循環(huán),進(jìn)入下一個循環(huán)
        • throw:拋出異常
    • guard寫在函數(shù)里
//guard格式:
guard 條件表達(dá)式 else{
//條件語句
break
}
//---------------
let age = 20
//定義函數(shù)
func online(age :Int) -> Void {
//大于18歲,帶了身份證,帶了錢
    guard age >=18 else{
       print("回家去")
       return
    }
    guard 帶了身份證 else{
       print ("回家取身份證")
       return
    }
    guard 帶了錢 else{
       print("回家拿錢")
       return
    }
//執(zhí)行語句
print(“留下來上網(wǎng)”)
}
//調(diào)用函數(shù)
online(20)
  • switch
    • 蘋果對switch進(jìn)行了大大的增強(qiáng),使其擁有了其他語言中沒有的特性
    • switch的簡單使用
      • 基本用法和OC用法一致
      • 不同之處:
        • switch后面可以不跟()
        • case后可以不跟break(默認(rèn)會有break),不會產(chǎn)生case穿透
    • 如果希望產(chǎn)生case穿透,需要在語句結(jié)束時候,加上另一個關(guān)鍵字fallthrough
    • 在swift中switch的case后面可以跟上多個條件,并且多個條件以逗號(,)分隔
//基本用法:sex 0:男 1 :女
let sex = 0
switch sex {
case 0 :
print("男")
case 1 :
print("女")
}
//-------------------
switch sex {
case 0 ,1 :
print("正常人")
default:
print("非正常人")
}
  • swift的特殊用法
    • 判斷浮點(diǎn)型
    • 判斷字符串類型
    • 支持區(qū)間判斷
      • 半開半閉區(qū)間 0..<10 :0~9 不包含10
      • 閉區(qū)間 0...10 :0~10 包含10
//判斷浮點(diǎn)型
let m = 3.14
switch m{
 case 3.14:
 print("m是一個π")
 default:
 print("m非π")
}
//判斷字符串類型
let a = 30
let b = 20
let opration = "*"
var result = 0
switch opration{
case "+":
result =  a + b
case "-":
result = a-b 
case "*":
result = a *b 
case "/"
result = a/b
default :
print("非法操作")
}
//支持區(qū)間判斷
let score = 88
switch score {
case 0..60:
  print("不及格")
case 60..80:
  print(“及格”)
case 80..90:
  print("良好")
case 90...100:
  print("優(yōu)秀")
default: 
  print("不合理分?jǐn)?shù)")
}
  • 總結(jié)
  • swift初體驗(yàn)
    • 導(dǎo)入框架 import 框架名稱
    • 定義標(biāo)識符
      • 定義標(biāo)識符必須指定常量和變量
    • 如果一行當(dāng)中只有一條語句,那么語句結(jié)束,分號可以省略
    • 打印內(nèi)容 print("")
  • 常量和變量的使用
    • var :修飾變量
    • let :修飾常量
    • 使用注意:
      • 優(yōu)先使用常量,防止被修改
      • 常量的本質(zhì):指向的內(nèi)存地址不可以修改,但是可以通過內(nèi)存地址找到對應(yīng)的對象,之后修改對象內(nèi)部的屬性
  • 數(shù)據(jù)類型
    • 整型和浮點(diǎn)型
    • 類型推導(dǎo):
      • 如果在定義一個標(biāo)識符時,如果有直接給該標(biāo)識符賦值,那么會根據(jù)賦值的類型推導(dǎo)前面標(biāo)識的類型
      • 那么這個時候標(biāo)識符的類型可以省略
      • option+鼠標(biāo)左鍵
    • 基本運(yùn)算
      • swift中沒有隱式類型轉(zhuǎn)化
      • 所有必須保證類型一致才能進(jìn)行運(yùn)算
  • 邏輯分支
    • if分支
      • if后面()可以省略
      • 沒有非零即真,必須有明確真假
      • Bool:true/false
    • 三目運(yùn)算符
    • guard
      • guard
        • 方法return
        • 循環(huán)break/continue
        • 拋出異常throw
      • 條件為true執(zhí)行語句塊,條件為false執(zhí)行else{}
    • switch
      • switch后面的()可以省略
      • case結(jié)束后可以不加break
      • 希望case穿透:fallthrough
      • 特殊用法
        • 判斷浮點(diǎn)型
        • 判斷字符串
        • 判斷區(qū)間類型
          • 半開半閉區(qū)間 0..<10
          • 閉區(qū)間 0...10

2.循環(huán)

  • for
    • 如果一個標(biāo)識符不需要使用,那么可以通過_來代替
    • 建議區(qū)間遍歷
//區(qū)間遍歷
for i in  0..<10 {
 print(i)
}
for _ in 0...9 {
 print("hello world")
}
  • while
    • while后面的()可以省略
    • 沒有非零即真
//i最后一次打印是打印的1
var i = 10 
while i >0 {
  print(i)
  i -= 1 
}
  • do while
    • 區(qū)別:不再使用do while ——>repeat while
//m最后一次打印是打印9
var m = 0
repeat {
print(m)
m += 1
}while m < 10

3.字符串的使用

  • String
    • string 是一個結(jié)構(gòu)體,性能更高
    • NSString是一個OC對象,性能略差
    • String支持直接遍歷
    • Swift提供了String 和NString之間的無縫轉(zhuǎn)換
  • 字符的定義
    • 定義不可變字符串 :let修飾的字符串就是不可變的
    • 定義可變字符串: var修飾的字符串就是可變的
  • 如何遍歷字符串中所有字符
    for c in str.characters{
    print(c)
    }
  • 獲取字符串的長度
let length = str.characters.count
  • 字符串的拼接
    • 字符串之間的拼接
    • 字符串和其他標(biāo)識符之間的拼接
    • 在拼接過程中的格式化
//字符串之間的拼接
let str1 ="殷鳴"
let str2 = "李依隆"
let resultStr = str1 + str2 
//字符串和其他標(biāo)識符之間的拼接
let name = "ym"
let height = 1.60
let age =28
let infoStr = "my name is \(name) ,age is \(age) ,height is \(height) "
print(infoStr)
//在拼接過程中格式化:QQ音樂分鐘秒鐘拼接
let min = 2
let second = 3
let timeStr = Sting(format:"%02d:%02d",arguments:[min,second])
  • 字符串的截取
    • 將string類型轉(zhuǎn)成NSString類型再進(jìn)行截取
      • (urlString as NSString) ——>NSString
    • 蘋果原生方式進(jìn)行截取
let urlString = "www.520it.com"
//方式1:將string類型轉(zhuǎn)成NSString類型再進(jìn)行截取
let header = (urlString as NSString ).substringToIndex(3)
let footer = (urlString as NSString).substringFromIndex(10)
let range = NSMakeRange(4,5)
let middle = (urlString as NSString).substringWithRange(range)
//方式2:swift原生方式進(jìn)行截取
let headerIndex = urlString.startIndex.advanceBy(3)
let header = urlString.substringToIndex(headerIndex)
let footerIndex = urlString.endIndex.advancedBy(-3)
let footer = urlString.substringFromIndex(footerIndex)
let range = Range(start:headerIndex.advancedBy(1),end:footerIndex.advancedBy(-1)) 
//上面range方法過期了 ,蘋果建議寫成區(qū)間形式
let range = headerIndex.advancedBy(1)..<footerIndex.advancedBy(-1)
let middle = urlString.substringWithRange(range)

4.數(shù)組

  • 數(shù)組:是一串有序的由相同類型元素構(gòu)成的集合

  • 數(shù)組中的集合元素是有序的,可以重復(fù)出現(xiàn)

  • swift數(shù)組類型是Array,是一個泛型集合

  • 如何定義數(shù)組

    • 定義不可變數(shù)組,使用let修飾
      • let array : Array<String> = ["why","yz","lmj","lnj"]
      • 如果直接初始化的話,可以省略: Array<String>,讓其直接類型推導(dǎo)
      • let array :[String] = ["why","yz","lmj","lnj"]
      • let array = ["why","yz","lmj","lnj"]
    • 定義可變數(shù)組,使用var修飾
      • 數(shù)組是泛型集合,必須明確指定該數(shù)組之后存放的元素
      • var arrayM = Array<String>()
      • 簡便寫法:var arrayM = [String]()
      • arrayM.append("123")
  • 對可變數(shù)組的基本操作

    • 增刪改查——>數(shù)據(jù)庫
    • 添加元素
      • arrayM.append("lmj")
    • 刪除元素
      • removeAtIndex()
      • removeAll
    • 修改元素
      • arrayM[0] = "Why"
      • arrayM
    • 根據(jù)下標(biāo)獲取元素
      • let item = arrayM[0]
  • 遍歷數(shù)組中所有的元素(三種方式)

    • for i in 0..<array.count{
      print(array[i]獲取下標(biāo)值)
      }
    • for name in array {
      print("類型推導(dǎo)出name的類型,只能獲取元素,不能獲取下標(biāo)值")
      }
    • 可以獲取到下標(biāo)值和元素
    • for(index ,name) in array .enumerate(){
      print(index)
      print(name)
      }
  • 數(shù)組的合并

    • 相同類型的數(shù)組可以相加進(jìn)行合并
    • let array1 = ["why","yz"]
    • let array2 = ["lmj","lnj"]
    • 合并:let resultArray = array1 + array2
    • 類型不一樣的數(shù)組,不可以進(jìn)行相加合并
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容