Swift(一)

作者: BiniOSdeveloper | 来源:发表于2016-03-17 17:25 被阅读77次
    //: Playground - noun: a place where people can play
    
    import UIKit
    
    /**
    * Swift 2.0以前
    * print
    * println
    * Swift 2.0 以后合体了
    * print
    */
    print("Hello,Swift")
    
    // 1.常量和变量.
    
    let a = 10 // 程序运行期间,不能修改的量.
    var b = 20 // 程序运行期间,可以修改的量.
    
    /**
    *  命名规则.
    * 1. 可以由数字 字母 下划线 组成
    * 2. 不能以数字开头.
    * 3. 全面支持Unicode(可以用中文 表情等)
    */
    
    let 😹 = 20
    var 😻 = 30
    😻 + 😹
    let 硬件 = 90
    let 软件 = 100
    let 电脑 = 硬件 * 软件
    
    // 一:数据类型(会根据后面类型自己判断变量的类型)
    // 1.
    //(1) 整型 Int Int8 Int16 Int32 Int64
    let firstNumber: Int = 20
    let number: Int8 = 20
    Int.max // 和当前CPU的大小有关.
    Int.min
    Int8.max
    Int8.min
    Int16.max
    Int16.min
    INT64_MAX
    Int64.min
    
    // (2)无符号整型 UInt UInt8 UInt16 UInt32 UInt64
    UInt.max
    UInt.min
    
    // 2.(带小数点的默认为Double类型)
    // (1)Float 7位
    let firstFloat: Float = 0.1231212121554454515
    let secendFloat = 0.2
    
    
    // (2)Double 16 位
    let firstDouble: Double = 0.452165646415415454545454666666
    let secendDouble = 0.5
    
    // Swift中在运算时,有严格的类型匹配.
    // 如果类型不匹配时,需要进行类型强转.
    Double(firstFloat) + firstDouble
    
    // 3.字符和字符串.
    // (1)字符 Character
    let char: Character = "a"
    // (2)字符串 String
    var firstString: String = "无语"
    let secendString: String = "对你"
    
    secendString + firstString + String(char) // 字符串拼接.
    firstString += secendString
    
    firstString += "\(硬件)" //  "\()"插入运算符.
    
    let ThirdString = "ddDdDd"
    ThirdString.uppercaseString // 字符串大写.
    ThirdString.lowercaseString // 字符串小写.
    ThirdString.characters.count // 获取字符串长度,能返回一个装着字符的数组.
    
    // 4.数组.Array
    
    // Array<元素类型> 或者 [元素类型]
    let firstArray: Array<Int> = Array<Int>()
    let FourArray: [Int] = [Int]()
    
    var secendArray = [10, 20, "ab", 50]
    print(secendArray)
    let ThirdArray = [12, "a", 32, secendString]
    
    // 数组添加元素
    secendArray.append(30)
    secendArray.append("sewew")
    secendArray += ["真的"]
    secendArray.removeFirst(3) // 从一个开始删到第几个.
    secendArray.removeAtIndex(2) //
    secendArray.removeFirst() // 删的第一位是哪个数
    print(secendArray)
    
    // map 映射 将数组中的值,映射成另外一种类型(类似字符串的万能公式)
    let array = [10, 30, 40, 50, 60]
    let arr = array.map({"多少\($0)元"}) // $0 表示遍历时每次代替的元素.(应用:如时间戳)
    arr
    // 筛选 值 > 30 的
    let arr1 = array.filter({$0 > 30})
    arr1
    
    
    
    // 5. 元组
    // 1. 元组定义
    // (1)元组可以有多个参数.
    // (2)参数没有词修饰,用" . "下标去取值.
    // (3)有词修饰,可以用" . "或" 词 "取值 .
    
    // 2. 元组的应用.
    // (1)可以同时给多个变量赋值()
    // (2)函数有多个返回值.
    let def = (name:"傻×", age:20, count:100.0)
    def.name
    def.age
    def.count
    
    let abc = ("傻nouou", 19, 200.0)
    abc.0
    abc.2
    abc.1
    
    let(name, age, count) = abc
    name
    age
    count
    
    let arrayYuanzu = [10, 30, 40, 50, 60]
    let arryuanzu = arrayYuanzu.map({"多少\($0)元"}) // $0 表示遍历时每次代替的元素.(应用:如时间戳)
    print(arr)
    
    
    // 6. Bool类型
    
    // true false
    let str = "玉皇大帝"
    let string = "王母娘娘"
    str == string
    
    // 7. 字典(无序)
    let dic:Dictionary<String, String> = Dictionary<String, String>()
    
    var dictionary = ["name":"小刘","age":"28"]
    dictionary["name"]
    
    let index = dictionary.indexForKey("name")
    dictionary.removeAtIndex(index!)
    
    
    dictionary
    // 可以有取值范围
    // 0...2   0 <= x <= 2 [ 0, 2 ]
    // 0.. <2  0 <= x < 2 [0, 2]
    array[0...2]
    
    
    // 二: 分支语句
    // 1. if... else
    if str == string {
        print("成立")
    }else {
    
     print("不成立")
    }
    // 2. switch  fallthrough穿过
    let i = 20
    switch i {
    case 0...20 where i > 20:
        print("是20")
        fallthrough // 加它会继续往下走
    case 30:
        print("是30")
            // 无fallthrough 直接跳出,默认加了break.
    default:
        print("嘿嘿")
    }
    
    // switch 可以传字符串,不再局限于整型表达式.
    switch "小明" {
        case "小明":
        print("heheda")
       case "小智":
        print("xxxxxxx")
       default:
        print("++++")
    }
    
    // 三: 循环.
    // 1.while 
    var num = 0
    while num < 100 {
    
        num++
    }
    // 2. do...while Swift2.0以前的写法.
    // repeat...while Swift2.0以后.
    
    repeat {
     num++
    }while num < 100
    
    // 3. for
    for var num = 0; num < 100; num++ {
      num++
    }
    
    
    for num in 0..<100 {
    
        print(num)
    }
    
    // 四:函数
    // func 函数名(参数列表) ->返回值类型 {函数体}
    // _ 对外隐藏自己的外部参数.
    // 函数默认第一个参数加了_
    
    // Swift2.0以前,#number1 以本身作为外部参数.
    // 2.0以后,默认的参数列表中第一个元素隐藏外部参数
    // 需要在第一个参数前给它起外部参数.
    
    // 参数如果默认给初值,在函数调用时,可以忽略.
    
    
    func sayHi() {
    print("hehele")
    }
    
    sayHi()
    
    // 有参有返回值
    func sumNumber(num1
        
        num1:Int, _ num2:Int, num3: Int = 0) ->Int {
    
    return num1 + num2 + num3
    
    }
    sumNumber(num1: 20, 20)
    sumNumber(num1: 20, 20, num3: 1)
    
    // 有参无返回值
    func printString (string:String) {
       print(string)
    }
    
    // 无参无返回值
    
    func sayNo() {
    
    print("hehe")
    
    }
    
    // 无参有返回值
    func sayHopy() ->String {
        
        let xiaoming: String = "小明"
    
    return xiaoming
    
    }
    
    // 有参多返回值.
    func haveMoreReturn (more:String) ->(name:String,age:Int) {
    
        return (name,age)
    }
    
    
    // 多相同参数列表可以忽略为...
    func sumAllNumber (number:Int...) ->Int {
    
        var sum = 0
        for num in number {
        
            sum += num
        
        }
     return sum
    
    }
    
    sumAllNumber(1, 2, 4, 54, 65, 454)
    
    
    // 无参多返回值.
    func noHaveMoreReturn () ->(String,Int) {
    
    return (name,age)
    
    }
    
    
    // 交换两个变量的值.  inout
    var num1 = 20
    var num2 = 30
    
    func exchangeNumber ( inout number1: Int, inout _ number2: Int) {
    
    //    let temp = number1
    //    number1 = number2
    //    number2 = temp
    
        // 通过元组交换两个变量的值.
        (number1, number2) = (number2, number1)
        
    }
    
    exchangeNumber(&num1, &num2)
    num1
    
    
    var str1 = "学成"
    var str2 = "啸天"
    
    // T 代表任意类型 泛型(还可以用U,同样也只泛型,U指另外一种泛型)
    func exchangeAnyObject<T> ( inout number1: T, inout _ number2: T) {
        
        //    let temp = number1
        //    number1 = number2
        //    number2 = temp
        
        // 通过元组交换两个变量的值.
        (str1, str2) = (str2, str1)
        
    }
    
    exchangeAnyObject(&num1, &num2)
    str1
    
    
    
    
    
    

    相关文章

      网友评论

        本文标题:Swift(一)

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