swift(一)天

来源:互联网 发布:算法工程师要加班么 编辑:程序博客网 时间:2024/04/26 19:05

由于公司项目都是用swift写的。。 菜鸟一枚的我开始自学swift

记录一下。。 自己一个人学很没动力。。。  现在脑子是个浆糊。。打算今天先看到这里。。 (以为今天起码了解了一点语法,应该能看懂一点项目了。。  刚刚瞥了一眼。。 这是写iOS的吗?? 我咋一点都看不懂)。。好吧。。 我需要努力努力。



import UIKit


class ViewController: UIViewController {


    overridefunc viewDidLoad() {

        super.viewDidLoad()

        

        self.view.backgroundColor =UIColor.redColor()

        

        var stringValue:String

        

        stringValue = "stringValue"

        

        var stringValue2 ="string2"

        stringValue2 = "string3"

        

        //1.输出

        print(stringValue, terminator:"")//不会换行因为terminator将默认参数值更改了

        print(stringValue2)

        

        //2.默认参数值

        someFunction()

//        someFunction(15, parameter2: "string4")//此处对应的 func someFunction(parameterWithDefault: Int = 10, parameter2: String = "string1") 

        

        //3.忽略外部参数名 (利用一个 _代替外部参数名)

        someFunction(12,"aa")

        

        

        //4.无返回值没有返回值得函数都会被返回 特殊的值  void是一个空元祖类型

        unReturnFouction("Anna")

        

        //5.多重返回值

        

        var someInts = [Int]()

        print("someInt is of type [Int] with\(someInts.count)")

        

        someInts.append(3)//向数组中添加数据

        print("[Int] with\(someInts)")

        

        //创建默认值的数组

        var fourDouble = [Double](count:3, repeatedValue: 0.0)

        fourDouble.append(14.1)

        print("fourDouble\(fourDouble)")

        

        //通过两个数组创建一个数组

        var anotherDouble = [Double](count:3, repeatedValue: 1.0)

        anotherDouble += [16.1]

        print("anotherDouble:\(anotherDouble)")

        

        //和数组

        var sumDouble = fourDouble + anotherDouble

        sumDouble += [15.1]

        print("sumDouble:\(sumDouble)")

        

        //数据项的值和索引值

        

        for (index, value)in sumDouble.enumerate() {

            print("Item\(String(index +1))) \(value)")

        }

        

        sumDouble.insert(19.9, atIndex:0)

        print("sumDouble:\(sumDouble)")

        

        //多重返回值

//        let bounds = minAndMax(sumDouble)

//        print("minandMax min:\(bounds?.min)  max:\(bounds?.max)")

        

        let doubleArray = [Double]()

        

        let bounds =minAndMax(doubleArray)

        print("minandMax min:\(bounds?.min)  max:\(bounds?.max)")

        

        

        //6.输入输出函数

        var tempa =15

        var tempb =10

        

        //输入输出函数 在定义的时候不能被定义成inout   它将不能被var  let标识

        //在传入参数时  将在参数前加上表示可以在函数内更改

        swapInts(&tempa, &tempb)

        print("tempa :\(tempa),  tempb :\(tempb)")

        

        

        //7.函数类型

        /*

            var mathFunction: (Int, Int) -> Int = addTwoInts 

            

            可以用mathFuction来调用被赋值的函数

        

        */

        

        //8.函数类型作为返回类型  ->后写一个完整的函数类型

        let currentValue =3

        let moveNearerToZero =chooseStep(currentValue > 0)

        print("moveNearToZero :\(moveNearerToZero)")

        

        //可选绑定 判断可选类是否包含值 如果包含就赋值给一个林市场量或者变量

      

    }


    //2.默认参数

    //忽略外部参数名 (利用一个 _代替外部参数名) 因为第一个参数默认忽略其外部参数名

    func someFunction(parameterWithDefault:Int = 10,_ parameter2: String ="string1") {

       

        print(parameterWithDefault, parameter2);

    }

    

    //3.可变参数

    //->Double  返回值为double 名叫做numbers[Double]

    

    func arithmeticMean(numbers:Double...)->Double {

        

        var total:Double =0

        for number1in numbers {

            total += number1

        }

        return total /Double(numbers.count)

    }

    

    //4.无返回值函数

    //关于 stringcharacters

    /*

        string类型是值类型 创建了新的字符串,进行常量变量复制操作或者在函数、方法中传递,会进行值拷贝

    

        string类型表示特定序列的字符值得集合

    */

    func unReturnFouction(person:String) {

        print("GoodBye,\(person)")

        

        //\(person)  插入字符串面量的每一项都被包裹在以反斜线为前缀的圆括号中

        //您插值字符串中写在括号中的表达式不能包含非转义双引号 (")和反斜杠 (\),并且不能包含回车或换行符。

        print(person.characters.count)

        

    }

    

    //5.多重返回值函数

    //确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示我知道这个可选有值,请使用它。这被称为可选值的强制解析(forced unwrapping

    

    //可选元组返回类型  如果函数返回的元组类型 可能在整个元祖中含有没有值就使用可选元组 Int, Int?

    

//    func minAndMax(array:[Double]) -> (min: Double, max:Double) {

//        

//        var currentMin = array[0]

//        var currentMax = array[0]

//        

//        for value in array[1..<array.count] {

//            

//            if value < currentMin {

//                currentMin = value

//            }

//            

//            if value > currentMax {

//                currentMax = value

//            }

//        }

//        

//        return (currentMin, currentMax)

//    }

    

    func minAndMax(array:[Double]) -> (min:Double, max:Double)? {

        

        if array.isEmpty {

            returnnil

        }

        var currentMin = array[0]

        var currentMax = array[0]

        

        for valuein array[1..<array.count] {

            

            if value < currentMin {

                currentMin = value

            }

            

            if value > currentMax {

                currentMax = value

            }

        }

        

        return (currentMin, currentMax)

    }


    

    //6.输入输出参数

    func swapInts(inout a:Int, inout_ b: Int) {

        

        let temporaryA = a

        a = b

        b = temporaryA

        

    }

    

    

    //8.返回值是函数的类型

    

    func stepOne(input:Int) -> Int {

        return input +1

    }

    func stepTwo(input :Int) ->Int {

        return input -1

    }

    

    func chooseStep(backwards:Bool) -> (Int) ->Int {

        return backwards ?stepOne : stepTwo

    }

    

    

    overridefunc didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



}



0 0
原创粉丝点击