Swift学习

用typealias来给变量起一个别名

typealias Feet = Int
typealias Feet = Int
var distance: Feet = 100

print不换行

for x in 0...10{
    print("\(x) ", terminator: "")
}

输出:

0 1 2 3 4 5 6 7 8 9 10

Swift是类型安全的,在编译时如果类型检查错误会编译不过

定义变量不需要明确指定类型

如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型

输出变量

var name = "菜鸟教程"
var site = "http://www.runoob.com"
print("\(name)的官网地址为:\(site)")

Swift 可选(Optionals)类型

可选类型表示“那有一个值,为x,或者那儿没有值”
声明一个可选类型的变量,以下两种方式等价:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

Optional 是一个含有两种情况的枚举,None 和 Some(T),可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,而可选类型对所有的类型都可用,并且更安全。
关于Optional的理解,有篇比较好的文章:

http://www.cocoachina.com/swift/20160907/17498.html

使用var定义变量,使用let定义常量

swift3 中已经取消了++、--

区间运算符

1...5 区间值为 1, 2, 3, 4 和 5
1..< 5 区间值为 1, 2, 3, 和 4

fallthrough语句

Swift fallthrough 语句让 case 之后的语句会按顺序继续运行,且不论条件是否满足都会执行。

var index = 10
switch index {
   case 100  :
      print( "index 的值为 100")
   case 10,15  :
      print( "index 的值为 10 或 15")
   case 5  :
      print( "index 的值为 5")
   default :
      print( "默认 case")
}
// 结果:index 的值为 10 或 15

如果使用fallthrough

var index = 10

switch index {
   case 100  :
      print( "index 的值为 100")
      fallthrough
   case 10,15  :
      print( "index 的值为 10 或 15")
      fallthrough
   case 5  :
      print( "index 的值为 5")
   default :
      print( "默认 case")
}
// 执行结果:
// index 的值为 10 或 15
// index 的值为 5

字符串

字符串长度使用 String.characters.count 属性来计算

var varA   = "www.runoob.com"
print( "\(varA), 长度为 \(varA.characters.count)" )
// 输出:www.runoob.com, 长度为 14

你可以使用 == 来比较两个字符串是否相等

字符Character

Swift 中不能创建空的 Character(字符) 类型变量或常量:

// Swift 中以下赋值会报错
let char1: Character = ""
var char2: Character = ""

print("char1 的值为 \(char1)")
print("char2 的值为 \(char2)")

数组

你可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "第一个元素的值 \(someVar)" )
print( "第二个元素的值 \(someInts[1])" )
print( "第三个元素的值 \(someInts[2])" )

// 输出结果
// 第一个元素的值 20
// 第二个元素的值 30
// 第三个元素的值 40

如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。实例如下:

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs.append("Runoob")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
    print("在 index = \(index) 位置上的值为 \(item)")
}
// 输出结果:
// 在 index = 0 位置上的值为 Apple
// 在 index = 1 位置上的值为 Amazon
// 在 index = 2 位置上的值为 Runoob
// 在 index = 3 位置上的值为 Google

我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中推断出来:

var intsC = intsA + intsB

我们可以使用 count 属性来计算数组元素个数

使用函数类型

在 Swift 中,使用函数类型就像使用其他类型一样

func sum(a: Int, b: Int) -> Int {
   return a + b
}
// 定义一个叫做 addition 的变量,参数与返回值类型均是 Int ,并让这个新变量指向 sum 函数:
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

// 输出结果: 129

闭包

Swift闭包有以下优化:

  1. 根据上下文推断参数和返回值类型
  2. 从单行表达式闭包中隐式返回(也就是闭包体只有一行代码,可以省略return)
  3. 可以使用简化参数名,如$0, $1(从0开始,表示第i个参数...)
  4. 提供了尾随闭包语法(Trailing closure syntax)

对数组进行排序:

let names = ["AT", "AE", "D", "S", "BE"]

var reversed = names.sorted(by: >)
print(reversed)
posted @ 2017-07-09 13:49  张驰小方块  阅读(176)  评论(0编辑  收藏  举报