OC转Swift之基础篇(二)--函数

本文详细介绍了Swift中的函数用法,包括函数的定义、可变参数、多层函数嵌套以及全局变量的使用。同时,还探讨了闭包的概念,展示了闭包作为函数简化形式的应用,并通过实例解释了闭包如何捕获和操作作用域内的变量。通过这些内容,读者将对Swift中的函数和闭包有更深入的理解。
摘要由CSDN通过智能技术生成

//函数

//老规矩“hello world”敬上

//函数最多只有一个可变参数(strings)放在最后一个参数

func joinStr(seperator:Character=",",strings:String...)->String{

            var result:String =""

            for (index,element) in strings.enumerated() {

                if index !=0 {

                    result.append(seperator)

                }

                result += element

            }

            return result

        }

        let result = joinStr(seperator:" ", strings:"Hello","world","!")

        print(result)

//多层函数的嵌套

func fn()->(Int,Int)->Int{

            func minus(a:Int,b:Int)->Int{

                return a-b

            }

            returnminus;

        }

        let minus =fn()

        print(minus(10,5))

        func calculate(num1:Int,num2:Int,fn:(Int,Int)->Int)->Int{

            return fn(num1,num2)

        }

        print(calculate(num1:1, num2:2, fn: minus))

//方法与UI结合 textField添加内容监听方法 方法写在 viewDidLoad之外

//全局变量 写在class之外

let showLabel =UILabel.init()


let textField =UITextField.init(frame:CGRect.init(x:20, y: 80, width:120, height:30));

        textField.keyboardType =UIKeyboardType.decimalPad

        textField.borderStyle =UITextBorderStyle.roundedRect

        textField.font =UIFont.systemFont(ofSize:15)

        textField.textColor =UIColor.darkGray;

        textField.placeholder ="请输入内容"

        textField.addTarget(self, action:#selector(FuncViewController.textFieldDidChange), for: UIControlEvents.editingChanged)

        view.addSubview(textField)

showLabel.frame =CGRect.init(x: textField1.frame.minX, y: textField2.frame.maxY+10, width: textField1.frame.width, height:textField1.frame.height)

        showLabel.text ="输入的内容"

        showLabel.font =UIFont.systemFont(ofSize:15)

        showLabel.textColor =UIColor.lightGray

        showLabel.textAlignment =NSTextAlignment.left

        view.addSubview(showLabel)


func textFieldDidChange(textField:UITextField){

        var filePath =String(#file)!

        let paths:[String] = filePath.components(separatedBy:"/")

        filePath = paths.last!

        print("<"+filePath+" : "+String(#line)+"> "+String(textField.text!))

showLabel.text = textField.text

    }

//闭包

//闭包就是函数代码块,对函数进行简化 隐藏return关键字 $0...$n表示第n个参数

let res =calculate(num1:1,  num2:2, fn: {

                $0-$1

        })

        print(res)

//闭包就是捕捉一定作用域的常量或者变量进而闭合并包裹着

func add(total:Int,step:Int)->()->Int{

            var total = total

            func fn()->Int{

                total = total+step

                return total

            }

            returnfn

        }

        let a =add(total:0, step:2)

        print(a())

        print(a())


/**可在方法前此声明,告诉编译器此方法可以不接收返回值 **/

@discardableResult


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值