波哥Swift學習8.30~9.4學習總結

對于我來說,Swift已經不是一門陌生的語言了,不過這幾天聽波哥講Swift4.0,又對Swift這門語言有了進一步的了解。


本次內容有:

  • 元的操作符進一步理解與代碼規范 ?
  • 字符與字符串在Swift4.0中的新特性
  • 字符串索引
  • 數組的高階操作(閉包+函數式編程)?
  • Set類型的更多操作與方法

元的操作符進一步理解與代碼規范

元的操作符:操作幾個對象就叫幾元操作符 比如:

let b = 1
let a = b

上面的=就是一個操作符,它操作了ab兩個對象,所以=二元操作符 再比如:

-b

代碼中的-就是一個操作符,它只對b一個對象進行了操作(取它的相反數)所以-一元操作符
代碼規范:二元操作符操作2個目標,在2個目標之間,前后用空格分隔.比如:3 + 4 ;+操作了3和4兩個對象,所以用空格分開。


字符與字符串在Swift4.0中的新特性

字符與字符串在Swift4.0中的新特性有一下2點:

  • 支持多行字符串(對前端開發效率大大提高)
    多行字符串:使用"""輸入你要的多行字符串""" 使用一組三個"來創建。舉個例子:
let poem = """
浩蕩離愁白日斜,
吟鞭東指即天涯。
落紅不是無情物,
化作春泥更護花。
"""
print(poem)

在Xcode9中看看輸出結果。自動加了換行。

  • 計算字符串字符總數方法簡化
    在Swift3.0中,對字符串計數是這樣的:
    poem.characters.count
    在Swift4.0中,是這樣的:
    poem.count

字符串索引

字符串索引并不常用,為了更熟悉Swift語言,決定還是謝了,使用代碼塊的形式來呈現。

let poem = """
浩蕩離愁白日斜,
吟鞭東指即天涯。
落紅不是無情物,
化作春泥更護花。
"""
//取出字符串的第1個索引
poem.starIndex

//取出字符串最后一個索引
poem.endIndex

//通過下標訪問字符串的字符
poem[poem.startIndex]

//用字符串的index(after:)或index(before)引用后一個或前一個索引
poem[poem.index(before: poem.endIndex)]

//用字符串的index(_:offsetBy:)方法向前進位
poem[poem.index(poem.startIndex, offsetBy: 3)] //前進3位
poem[poem.index(poem.endIndex, offsetBy: -3)] //后退3位

對于字符串索引有一點需要注意:字符串的endIndex不是該字符串的最后一個字符!** 比如上述代碼poem,它的endIndex不是“。” “。”是endIndex的前一位。


數組的高階操作(閉包+函數式編程)

這次學了兩個高階操作:

  • 高階操作①: 求和,連接元素, reduce
    舉個例子:
//連接元素
let str1 = ["A","P","P","L","E"]
let title = str1.reduce("I love") {
    $0 + "," + $1
}

//求和
let number1 = [1,3,5,7,9]
let total = number1.reduce(0) {
    $0 + $1
}

上面的是閉包表達式,下一章會提到reduce后面()中的是初始值,其實reduce就是一個循環,也可以用普通代碼寫出來,以第二個求和閉包為例:

let number = [1,3,5,7]
func reduce(array:[Int], initValue:Int) -> Int{
    var total = initValue
    
    for i in 0..<array.count {
        total += array[i]
    }
    
    return total
}

reduce(array: number, initValue: 0)
  • 高階操作②: 變形 map
    舉個例子,把一個Int類型的數組轉化為String類型的數組:
let number = [1,2,3,4,5,6,7]
//“->”后面表示你要轉化的類型
let intToStr = number.map { (number) -> String in
    return "\(number)"
}

該方法同樣可以使用函數實現(也是個循環)

func mapIntToStr(array:[Int]) -> [String]{
    var answer = [String]()
    var value = ""
    
    for i in array {
        value = String(i)
        answer.append(value)
    }
    
    return answer
}

let numbers = [1,3,5,7]
let intToStr = mapIntToStr(array: numbers)

只不過用閉包表達式寫簡潔了許多!


Set類型的更多操作與方法

  • ①元素數: count, 空否: isEmpty
let s: Set = [1,4,5,6]
//計數
s.count

//空否
s.isEmpty
  • ②插入:insert, 移除:remove
//插入
s.insert(2)

//移除
s.remove(2)
  • ③是否包含某元素:contains ??常用
s.contains(5)

交集 intersection

let s2: Set = [1,4,9,0]
s.intersection(s2)

補集 symmetricDifference

s.symmetricDifference(s2)

其實,Swift的語法十分靈活,上面這些點語法在字符串,數組等情況下都可以通用!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容