设为首页 加入收藏

TOP

Swift 基础语法(二)
2017-10-10 12:16:17 】 浏览:9702
Tags:Swift 基础 语法
为空") return } // 代码执行至此,name & num 都是有值的 print(name) print(num)
  • 在程序编写时,条件检测之后的代码相对是比较复杂的
  • 使用 guard 的好处
    • 能够判断每一个值
    • 在真正的代码逻辑部分,省略了一层嵌套

switch

  • switch 不再局限于整数
  • switch 可以针对任意数据类型进行判断
  • 不再需要 break
  • 每一个 case后面必须有可以执行的语句
  • 要保证处理所有可能的情况,不然编译器直接报错,不处理的条件可以放在 default 分支中
  • 每一个 case 中定义的变量仅在当前 case 中有效,而 OC 中需要使用 {}
let score = "优" switch score { case "优": let name = "学生" print(name + "80~100分") case "良": print("70~80分") case "中": print("60~70分") case "差": print("不及格") default: break } 
  • switch 中同样能够赋值和使用 where 子句
let point = CGPoint(x: 10, y: 10) switch point { case let p where p.x == 0 && p.y == 0: print("中心点") case let p where p.x == 0: print("Y轴") case let p where p.y == 0: print("X轴") case let p where abs(p.x) == abs(p.y): print("对角线") default: print("其他") } 
  • 如果只希望进行条件判断,赋值部分可以省略
switch score { case _ where score > 80: print("优") case _ where score > 60: print("及格") default: print("其他") }


四、for 循环

  • OC 风格的循环
var sum = 0 for var i = 0; i < 10; i++ { sum += i } print(sum) 
  • for-in,0..<10 表示从0到9
sum = 0 for i in 0..<10 { sum += i } print(sum) 
  • 范围 0...10 表示从0到10
sum = 0 for i in 0...10 { sum += i } print(sum) 
  • 省略下标
    • _ 能够匹配任意类型
    • _ 表示忽略对应位置的值
for _ in 0...10 { print("hello") }


五、字符串

在 Swift 中绝大多数的情况下,推荐使用 String 类型

  • String 是一个结构体,性能更高
    • String 目前具有了绝大多数 NSString 的功能
    • String 支持直接遍历
  • NSString 是一个 OC 对象,性能略差
  • Swift 提供了 String 和 NSString 之间的无缝转换

字符串演练

  • 遍历字符串中的字符
for s in str.characters { print(s) } 
  • 字符串长度
// 返回以字节为单位的字符串长度,一个中文占 3 个字节 let len1 = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) // 返回实际字符的个数 let len2 = str.characters.count // 返回 utf8 编码长度 let len3 = str.utf8.count 
  • 字符串拼接
    • 直接在 "" 中使用 \(变量名) 的方式可以快速拼接字符串
let str1 = "Hello" let str2 = "World" let i = 32 str = "\(i) 个 " + str1 + " " + str2 

我和我的小伙伴再也不要考虑 stringWithFormat 了 :D

  • 可选项的拼接
    • 如果变量是可选项,拼接的结果中会有 Optional
    • 为了应对强行解包存在的风险,苹果提供了 ?? 操作符
    • ?? 操作符用于检测可选项是否为 nil
      • 如果不是 nil,使用当前值
      • 如果是 nil,使用后面的值替代
let str1 = "Hello" let str2 = "World" let i: Int? = 32 str = "\(i ?? 0) 个 " + str1 + " " + str2 
  • 格式化字符串
    • 在实际开发中,如果需要指定字符串格式,可以使用 String(format:...) 的方式
let h = 8 let m = 23 let s = 9 let timeString = String(format: "%02d:%02d:%02d", arguments: [h, m, s]) let timeStr = String(format: "%02d:%02d:%02d", h, m, s) 

String & Range 的结合

  • 在 Swift 中,String 和 Range连用时,语法结构比较复杂
  • 如果不习惯 Swift 的语法,可以将字符串转换成 NSString 再处理
let helloString = "我们一起飞" (helloString as NSString).substringWithRange(NSMakeRange(2, 3)) 
  • 使用 Range 的写法
let startIndex = helloString.startIndex.advancedBy(0) let endIndex = helloString.endIndex.advancedBy(-1) helloString.substringWithRange(startIndex..<endIndex)


六、集合

数组

  • 数组使用 [] 定义,这一点与 OC 相同
//: [Int] let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
  • 遍历
for num in numbers { print(num) } 
  • 通过下标获取指定项内容
let num1 = numbers[0] let num2 = numbers[1] 
  • 可变&不可变
    • let 定义不可变数组
    • var 定义
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇swift - 访问控制 下一篇Swift函数和闭包

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目