波哥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..
  • 高阶操作②: 变形 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的语法十分灵活,上面这些点语法在字符串,数组等情况下都可以通用!

你可能感兴趣的:(波哥Swift学习8.30~9.4学习总结)