zoukankan      html  css  js  c++  java
  • Swift基础(一)

    一、Swift简介

      苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言Swift,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。2015年的WWDC开发者大会上,苹果公司推出了Swift2.0版本,并且Swfit完全开源。

    二、声明变量和常量

    • 在Swift中使用“let”修饰一个常量,使用“var”修饰一个变量;
    • let修饰常量的值是不可以更改的;
    • var修饰的变量的值是可以更改的;
    • 在声明常量和变量的时候可以使用表情符号、中文等命名常量名和变量名。
    • Swift定义变量或者常量的时候,需要标识出变量或者常量的类型,如果不标识,会根据初始值自动推断。
    • 注:在OC中使用mark和Swift使用mark的方式不同:
    // OC中 
    #pragma mark -
    // Swift中
    // MARK: 
    • 代码示例:
    // Swift中导入系统类库使用 import 类库名 ,不再使用 # 和 <>(或 "")
    import Foundation
    // Swift中输出语句:print
    print("Hello, World!")
    // MARK: - 定义常量、变量
    // 定义常量(使用完第一次就不能修改它的值)
    let myGender = ""
    // 定义变量
    var carName = "BMW"
    carName = "Audi"
    print(carName)
    print(myGender)
    
    // MARK: - 定义常量变量:变量类型的隐式转换
    
    // 在Swift中如果定义常量变量不给定相关的类型,它会隐式转换成你给定的初值类型
    
    let name = "Jack" // 如果这样定义一个常量,它会隐式转换成String类型
    
    let name1 : String = "Rose" // 如果给定类型,后边赋值的时候需要根据类型进行赋值
    
    let age : Int = 18 // 如果定义常量最好给出初始值,定义变量可以不给初始值

      字符、字符串:

    var char : Character = "A" // 赋值字符类型的时候仅需一个字母即可
    var flag : Bool = true //Bool值只有true 和 false
    print(flag)
    
    // MARK: - 字符串String
    // 创建空字符串
    var str_emperty = ""
    var str1_emperty = String()
    // 判断是否为空
    if str1_emperty.isEmpty {
        print("str_emperty is emperty")
    }
    // 拼接
    var str_url = "http://"
    var str = "www.baidu.com"
    
    let str_new_url = str_url + str
    
    print(str_new_url)
    print("这是百度的网址\(str_new_url)") //  \(变量名)输出相关内容
    
    // 获取字符串长度
    var str1 : String = "abcdef"
    let length = str1.characters.count;
    //print(length)
    
    // 字符串的比较
    var str2 = "ABC"
    var str3 = "DEFG"
    if str2 != str3 {
    //    print("两个字符串不相等")
    }

    三、数组,字典

    • 在Swift中使用“let”或者“var”声明一个数组或者字典;
    • 数组必须指定数据类型,如果没有指定类型则会根据数组的初值去推断数据类型;
    • 字典所有的key值必须是同一数据类型;
    • 字典所有的value必须是同一数据类型。
    • 代码示例:
    // MARK: - 数组
    // swift中数组的元素类型必须相同
    // 定义数组
    var nameArray = ["oo", "ABC", "DEF"]
    print(nameArray)
    
    var nameArrat1:Array<String> = ["YQ", "HG", "QEW"]
    
    // 定义一个空数组(字符串)
    let arrayNew = Array<String>()
    print(arrayNew)
    
    // 访问数组中的元素
    print(nameArray[1])
    
    // 向数组中添加元素
    var int_array = Array<Int>()
    int_array.append(520)
    
    int_array.append(123)
    
    print(int_array)
    
    // 使用运算符添加数组元素
    int_array += [1]
    int_array += [3]
    print(int_array)
    
    // 使用运算符添加多个数组元素
    int_array += [9, 99, 999]
    print(int_array)
    
    // 插入元素具体的位置
    int_array .insert(521, atIndex: 1)
    print(int_array)
    // 移除某个元素
    int_array.removeAtIndex(4)
    print(int_array)
    
    // 移除所有元素
    int_array.removeAll()
    print(int_array)
    
    // MARK: - 字典
    
    // 定义一个字典类型的变量
    var dict:Dictionary<String,Int> = ["a":18, "b":69, "c":38]
    print(dict)
    // 定义空字典
    var dictionary:Dictionary<String,Int> = [:]
    var dictionary1 = Dictionary<String, Int>()
    print(dictionary, dictionary1)
    
    // 向字典中添加键值对
    dict["d"] = 50
    print(dict)
    
    // 修改字典中的键值
    dict["c"] = 99;
    print(dict["b"])
    
    // 删除字典中的内容
    dict.removeValueForKey("c");
    print(dict)

    四、元组

    • 元组是Swift里面独有的一种数据格式。
    • 是一个可以返回多个值的数据格式。
    • 在Swift里面声明的时候使用“()”声明。
    • 元组可以通过下标去访问元素,也可以通过key值去访问元素;
    • 整体的数据结构有点类似于C语言里面的结构体。
    • 代码示例:
    // MARK: - 元组
    // 定义一个元组
    
    // 方法1:直接初始化
    var tuple = ("语言", ["iOS", "H5", "Android"])
    // 方法2:显示初始化的方式
    let tupleNew:(String, Array) = ("语言", ["iOS", "H5", "Android"])
    
    print(tuple, tupleNew)
    
    // 取出元组中的值
    // 第一种取值方式:直接把元组赋值给另一个常量,根据相关标记进行取值
    
    let tupleNew1:(language:String, name:Array) = tupleNew
    var languageName = tupleNew1.language + tupleNew1.name[0] + tupleNew1.name[1] + tupleNew1.name[2]
    print(languageName)
    
    // 第2种取值方式:直接根据下标进行取值
    var languageNameNew = tupleNew.0 + tupleNew.1[0]
    print(languageNameNew)

    五、循环结构和分支结构

    • Swift里面的循环结构包含:for、for-in、while、repeat-while。
    • Swift里面的分支结构包含:if、if-else。
    • 代码示例:
    // MARK: - 循环
    // 第一种形式:
    for var i = 1; i < 10; i++ {
        print(i)
    }
    // 第二种
    for number in 1..<10 {
        print(number)
    }
    
    // 第三种形式
    for number in 1...10 {
        print(number)
    }
    
    // while循环和repeat...while
    
    var i = 8;
    while i > 0 {
        i--
        print(i)
    }
    
    repeat {  // 先执行一次循环体,在进行相关的循环
      print("我。。。")
    } while 1 < 0
    
    // 使用循环遍历数组
    
    var animalArray = ["dog", "pig", "cat", "fish"]
    
    for animal in animalArray {
        print(animal)
    }
    
    // 使用循环遍历字典
    var animalDic = ["dog":"", "pig":"", "cat":""]
    for (key, value) in animalDic {
        print("key = \(key), value = \(value)")
    }
    
    // MARK: - 分支结构 (if  switch)
    
    // if 形式的
    
    let flag1 = true;
    if flag1 == true {
        print("我是真的")
    } else {
        print("假的")
    }
    
    // switch形式使用fallthrough实现贯穿每种可能
    
    let value = 0
    
    switch value {
    case 0:
        print(0)
        fallthrough
    case 10:
        print(10)
        fallthrough
    default:
        print("other")
    }
    
    // case 可以使用一个范围
    switch value {
    case 0..<10:
        print("输出0-10之间的数值")
    case 10...100:
        print("输出10-100之间的数值")
    default:
        print("other")
    }
    
    // 特点3: case 可以使用(let和var修饰的常量或者变量) where是满足某种条件
    switch value {
    case var i where value >= 0 && value <= 6:
        i = 99
        print(i)
    default:
        print("aaaa")
    }
    
    
    // 特点4:case后还可以匹配一个元组
    
    let point = (10, 10)
    switch point {
    case (10, 0):
        print("")
    case (_, 10):
        print("_代表可以忽略某个元素")
    case (10, 10):
        print("")
    default:
        print("....")
    }

    六、枚举

    • C 语言中,枚举类型将枚举名和一个整型值相对应。
    • Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个确定的值。
    • 如果给枚举成员提供一个值(称为“原始”值),则该值的类型可以是字符串,字符,或是一个整型值或浮点数。
    • 代码示例:
    // MARK: - 枚举(enum)
    // 枚举原始类型为int类型的
    
    enum Direction:Int {
        case east = 0
        case south = 1
        case west = 2
        case north = 3
    }
    print(Direction.east.rawValue) // rawValue就是找到相对应枚举的原始值
    
    // 枚举原始类型为string类型的
    enum Season:String {
        case spring = "春天"
        case summer = "夏天"
        case autumn = "秋天"
        case winner = "冬天"
    }
    
    print(Season.autumn.rawValue)
    
    // 根据原始值获取枚举的类型
    print(Direction(rawValue: 2))

    七、函数

    • Swift里面用 func 表示声明一个函数。
    • Swift的文件格式里面没有类似于OC的.h文件。所以,如果需要定义一个私有的函数,可以在func前面添加private 修饰。
    • 代码示例:
    // MARK: - 函数
    // 表示函数的关键字: func
    // 函数的类型有:四种
    // 1:无返回值,无参数
    func function1() -> Void {
        print("无返回值无参数")
    }
    
    function1()
    
    // 2:无返回值,有参数
    func function2(name str:String) -> Void {
        print(str)
    }
    
    function2(name: "ABC")
    
    // 3:有返回值无参数
    func function3() -> String {
        return "DEF"
    }
    
    print(function3())
    
    // 4:有返回值有参数
    
    func function4(num1:Int, num2:Int) -> Int {
        return num1 + num2
    }
    
    print(function4(6, num2: 9))
    
    // 函数的返回值为元组类型的
    func function5(num1:Int, num2:Int) -> (Int, Int, Int) {
        return (num1, num1 + num2, num2)
    }
    
    print(function5(1, num2: 2))
    
    // 外部参数和内部参数
    // first second 是外部参数  在函数调用的时候会显示这两个名称
    // one two 是内部参数:在函数内部使用的
    // 默认的情况下,第一个外部参数在调用的时候不显示,其余的都显示
    func function6(first one:Int, second two:Int) {
        print((one, two))
    }
    
    function6(first: 10, second: 2)
    
    
    // 如果都不想显示外部参数
    
    func function7(one:Int, _ two:Int) {
        print("忽略外部参数")
    }
    
    function7(1, 2)
    
    
    // 函数的嵌套
    
    func test1() {
        func test2() {
            func text3() {
                print(":-O")
            }
            text3()
        }
        test2()
        print(" v ")
    }
    
    test1()
    
    // inout参数:
    // 1.参数默认是用let修饰,即常量
    // 2.在参数前面添加var,就可以在函数内部修改参数的值,但不能改变实参变量的值.
    // 3.如果参数使用inout来修饰,就成了输入输出参数,在函数内部修改参数,可以影响实参变量的值.
    
    func test(inout name:String) {
        name = "MBBoy"
        print(name)
    }
    
    var myName = "yuanyuan"
    test(&myName)
    
    print(myName)
    
    
    func newText(var name:String) {
        name = "MBBoy"
        print("nameOld = \(name)")
    }
    var Name = "tianxin"
    print("name = \(Name)")
    
    newText(Name)
    
    print("name = \(Name)")
  • 相关阅读:
    扁平化职能管理三部曲
    [转载]持续交付和DevOps的前世今生
    敏捷项目管理工具-百度效率云
    敏捷项目管理:基础知识与应用实务
    第8章 “敏捷+”创新创业模式
    第7章 "敏捷+"项目管理
    第6章 迭代循环与项目结束
    第5章 发布循环
    第4章 立项与项目启动
    Windows 2003 + IIS6.0 相关 401.1 或 401.2 等问题解决
  • 原文地址:https://www.cnblogs.com/soley/p/5511458.html
Copyright © 2011-2022 走看看