Swift初探(一)

作者: 相关函数 | 来源:发表于2016-02-29 19:34 被阅读505次

常量和变量

常量

使用let定义一个常量,定义完成之后不能重新赋值.
使用let定义的常量其内存地址是不可变的
Swift支持隐式类型推断,可以根据初值,自动判断Swift的数据类型

let a = 10

let b: String = "Hello"

let c = 20.1

Swift不支持隐式类型转换, 不能让两个不一样的数据类型做四则运算.所以我们需要进行强转

Swift强转的格式: 数据类型(需要强转的数据)

let d = Double(a) + c

在Swift中可以使用汉字或者emoji表情作为数据名

let 哈哈 = "嘿嘿嘿"
let 😊 = "笑"

Swift支持运算符的重载,它会根据环境自动判断运算符的含义

let haha = "哈哈"
let heihei = "嘿嘿"
let hengheng = haha + heihei
Swift支持运算符的重载

变量

Swift中使用var来定义一个变量

var a = 11
a = 100

定义一个nil变量

如果我们需要定义一个初值为nil的变量, 格式为: var + 变量名 + ":" +变量类型? = nil

通常使用"?"来进行拆包操作...

var b: String? = nil

复杂数据类型

数组

在Swift数组里面的数据类型必须是一样的

let array = [1, 2, 3, "a"]

以上代码在Swift中是anyObject类型,也就是任意类型的.在Swift2.0中是NSObject类型的.这是数组初始化的一种方式,直接在"[]"中添加元素

数组初始化的第二种方式,在创建的时候先指定数据类型

let array1: [Int] = [1, 2, 4]

数组初始化的第三种方式, 定义一个空的数组

let array2: [Int] = []

对数组的操作 (增 删 改 查)

先定义一个数组,首先他应该是一个var定义的变量

var array = [1, 2, 3, 4, 5]

数组的增

往数组中插入数据

1.在某个位置单独的插入一条数据

在下标为3的位置插入一个整型数据5

array.insert(5, atIndex: 3)

2.在某个位置插入一个新的数组

在下标为0处插入一个数组

array.insertContentsOf([111, 222, 555], at: 0)

数组的删

数组的删

1.删除全部的元素

array.removeAll()

2.删除全部的元素,但是保留数组的空间

array.removeAll(keepCapacity: Bool)

在这里注意bool值跟OC中的是不同的,在OC中Bool类型只是一个typedef,指定非零即真,而在Swift中Bool是一个枚举,指定ture为真,falue为假

3.删除指定下标处的元素

array.removeAtIndex(index: Int)

4.删除一个区间的元素

删除一个区间的元素
let range: Range = Range(start: 1, end: 3)
array.removeRange(range)

5.删除一个区间的元素

其他的操作就是删除首位元素,末位元素以及从首位到某位元素

数组的改

可以通过数组下标进行改变数组的值

通过下标更改数组的值

我们可以使用运算符的重载进行数组的拼接

var array1 = [6, 7, 8, 9, 10]
var array2 = [11, 12, 123]
var array3 = array1 + array2
数组的拼接

字典

创建字典的两种方式

第一种
let dictionary = [1: 2, 3: 4, "a": "b"]

这种方式在Swift1.0中是不存在的

第二种
在Swift的字典中, 所有的key 所有的value都必须是同一类型的

let dictionary1: [String: Int] = ["a": 1, "b": 2]

对字典的操作

字典的增

首先定义一个字典

var dictionary = [1: 2, 3: 4, 5: 6]

对字典中不存在的key赋值其实就是对字典做增加的操作

dictionary[7] = 8

字典的删

字典的删跟数组很象 就不详细介绍

根据key值删除元素

dictionary.removeValueForKey(1)

可以通过给字典key对应的value值赋空来删除元素

dictionary[3] = nil

元组

元组是Swift中不同于OC的一点,

我们使用() 来表示一个元组, 元组中是没有具体的数据类型的概念的

定义一个元组

let type = ("悟空", "XZ")

访问元组

1.通过下标访问

直接使用点语法点出元组的下标

通过下标访问

2.通过名字

我们定义元组的时候可以指定其中元素的名称

let type1: (name: String, nickNmae: String) = type

指定名字

结构

循环结构

for循环

遍历数组 可以省略掉括号

let array = [1, 2, 3, 4, 5]
for var i = 0; i < array.count; i++ {
    print(array[i])
}

while循环

var i = 0
while i < array.count {
    print(array[i])
    i++
}

repeat...while循环

repeat{
print(i)
i++
}while i < 10

在Swift中repeat...while和C OC的do...while是一样的. Swift1.0版本的时候交do while, Swift2.0版本叫repeat while

for in 循环

let array = [1, 2, 3, 6, 8]
for var a in array {
    print(a)
}

分支结构

if else

var timer: String? = nil
if timer != nil {
    print("yes")
}else{
    print("no")
}

在 if else 判断的条件中不能填 timer ,在Swift中Bool是一个枚举,指定ture为真,falue为假

switch...case

let value = 10

switch value {
case 0:
    print(value)
case 1:
    print("a")
default:
    print("55555")
}

在Swift中的不需要break来跳出switch...case,因为在case中就已经存在break,但是如果不能满足全部的条件,则必须写default

在Swift中的switch...case可以在case中写一个条件.或者区间,我们使用"..."来表示闭区间,使用"..<"表示开区间

let value = 10
switch value {
case 0...10:
    print(value)
case 11 ..< 20:
    print("v")
default:
    print("vvvv")
}

当然我们也可以用它来判断一个元组,

let point = (10, 10)
switch point {
case (10, 10):
    print(point)
case (_, 10):
    print(point.1)
case (10, _):
    print(point,0)
case (_, _):
    print("哈哈哈")
}

在上面我们使用"_"来表示这个位置没有值,并且他的条件已经完全包含了,所以我们不用写default

其实上面我们已经提到case可以是一个条件

let value = 0
let value1 = 100
switch value {
case 0 where value1 < 10:
    print(value)
case 0 where value1 > 10:
    print(value1)
default:
    print("...")
}

上面代码很好的诠释了这句话,当我们判断case已经找到对应值,还必须满足where的条件

函数

在Swift中存在的函数种类: 无参无返回值 无参有返回值(单个返回值, 多个返回值) 有参无返回值 有参有返回值(单个返回值, 多个返回值)inout函数 嵌套函数.

函数的定义是:

func(关键字) test(函数名) "()"(参数列表) -> Void(返回值类型) {
  函数体
}

无参无返回值

func test() ->Void {
    print("one");
}
// 调用函数
test()

但函数没有返回值的时候,可以省略"-> Void"

无参有返回值

// 返回字符串
func test1() ->String {
    return "two"
}

print(test1())

// 返回数组
func test2() ->Array<Int> {
    return [1, 2, 3]
}
print(test2())

// 返回OC中的数组
func test3() ->NSArray {
    return [1, 3, "a", "m"]
}
print(test3())

上面返回数组是"<>"表示数组中元素的类型

有参无返回值

// 因为是无返回值,故省略了 -> Void 
func test4(number: Array<Int>) {
    print("电话: \(number)")
}

test4([1, 1, 0])

有参有单个返回值

func test5 (age: Int) ->String {
    return "年龄是\(age)"
}
print(test5(666))

无参有多个返回值

func test6 () -> (String, String, Int) {
    return ("a", "b", 6)
}
print(test6())

有参有多个返回值

func test7 (hello: Int, world: String) ->(Int, String) {
    return (hello, world)
}

print(test7(6, world: "6"))

其实在Swift中有多个返回值就是返回一个元组,元组中的元素我们可以使用点语法,点元素的下标来访问.

inout函数

func test8 (inout number: Int) {
    number = 100
}
var a = 5
test8(&a)
print(a)

inout函数可以讲外界的数据传进函数在传出来 在外界使用,这就是inout函数的用法,我们可以使用它进行外界数据与函数中数据的交换

函数嵌套

Swift是支持函数嵌套的,一层一层可以无限嵌套下去

// 第一层
func test10() {
    // 第二层
    func test11() {
        // 第三层
        func test12() {
            // 第...层
            // ...可以无限定义下去
        }
    }
}

Last

Swift和Storyboard是乔帮主留给我们两个财富,而Swift是一门充满魅力的语言.就像他的名字和logo一样,轻便,快速...

相关文章

  • Swift初探(一)

    常量和变量 常量 使用let定义一个常量,定义完成之后不能重新赋值.使用let定义的常量其内存地址是不可变的Swi...

  • Swift 中协议的扩展的简单应用

    参考: Swift面向协议编程初探 从 Swift 的面向协议编程说开去 根据下面的结构 设计类和协议 使用:

  • Swift 底层原理初探

    Swift 底层原理初探 1. 编译原理 在iOS中我们经常使用Objective-C和Swift这两门语言进行编...

  • swift初探

    ?操作符 Swift中是可以声明一个没有初始值的属性,Swift中引入了可选类型(Optional)来解决这一问题...

  • Swift初探

    开始之前允许吐槽一下,swift作为apple官方牵头并且为主的语言,特性进行了如此多修改和版本迭代对于一门开发语...

  • Swift 初探

    Swift 学习第一节 @(Swift 深入学习小记) if 语句缺省值的使用。 switch 支持任意类型的数据...

  • 初探swift

    Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LO...

  • Swift初探

    1.自定义打印语句2.代码书写 自定义打印语句为什么要自定义打印语句呢?因为Swift太简单,连打印信息都只有一句...

  • Swift初探

    Swift简介 Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C...

  • Swift初探

    import Foundation//// 输出语句 //print("Hello, World!") // //...

网友评论

    本文标题:Swift初探(一)

    本文链接:https://www.haomeiwen.com/subject/yxugkttx.html