博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lesson_Swift2
阅读量:6629 次
发布时间:2019-06-25

本文共 3004 字,大约阅读时间需要 10 分钟。

// Playground - noun: a place where people can playimport UIKit//=================================================================//函数////    func 函数名 (参数列表) -> 返回类型 {//        代码块//    }func sayHi(name: String) -> String {    return "Hi, " + name}var letter = "aeibcd1234"//a i b//e c d//数字func countLetter(letter: String) -> (Int, Int, Int) {    var aib = 0    var ecd = 0    var num = 0        for c in letter.lowercaseString {        switch c {        case "a", "i", "b":            aib++        case "e", "c", "d":            ecd++        default:            num++        }    }        return (aib, ecd, num)}countLetter(letter)//=================================================================//函数类型的变量//有点类似之前学过的函数指针var funcType: String -> String = sayHifuncType("蓝鸥")func sayBye(name: String) -> String {    return "Bye! " + name}funcType = sayByefuncType("蓝鸥")//参数没有名字,我们需要添加一个外部形参//1.在参数前加一个外部形参名 注:不能在函数中使用外部形参名//2.在参数名前加 #func personInfo(name personName: String, #sex: String, _age: String = "18") -> String {    return personName + " " + sex + " " + _age}personInfo(name: "隔壁老王", sex: "男")//可变参数, 都是相同类型的参数func sum(numbers: Float...) -> Float {    var sum: Float = 0.0        for number in numbers {        sum += number    }        return sum}sum(1.0, 2.0, 3.0, 4.0, 5.0)//如果需要用到参数运算(修改参数的值), 需要在此之前加var修饰func hanshu(var a: Int, b: Int) {    a += 3}var number = 5var number1 = 5var number2 = 3// inout关键字: 如果说我们改变传递的值,则需要用inout修饰变量//传递参数的时候,需要用&func swap(inout number1: Int, inout number2: Int) {    var temp = number1    number1 = number2    number2 = temp}swap(&number1, &number2)number1number2func sixPlus(price: Float) -> Float {    return price * 0.8}//函数类型作为返回值//隐藏掉 不希望被人能看到内部的方法func changeValue(plus: Bool) -> Int -> Int {    func plusOne(number: Int) -> Int {        return number + 1    }        func minusOne(number: Int) -> Int {        return number - 1    }        return plus ? plusOne : minusOne}changeValue(true)var cc: Int -> Int = changeValue(false)cc(20)//=============================================================//闭包//闭包跟OC的block一样//用法//{//      (参数列表)->返回值 in//      闭包的实现//{var names = ["Qiaoming", "kan", "taobao"]var sortedNames1:() = sort(&names, {    (stringA: String, stringB: String) -> Bool in    return stringA > stringB})names//去掉类型,通过类型推断自动获取类型//单行可以去掉returnvar sortednames2:() = sort(&names, {    (s1, s2) -> Bool in     s1 < s2})names//---------------------------------------var sortesNames3:() = sort(&names, {    return $0 > $1})// $0表示第一个数 $1表示第二个数names//---------------------------------------var sortesNames4:() = sort(&names, <)names//---------------------------------------sort(&names) { (s1, s2) -> Bool in    return s1 > s2}names//=====================================================================//类 结构体/**    相同点:    1.都可以定义属性    2.都可以定义方法,这是swift跟oc的明显的区别之一    3.都可以定义构造器(初始化方法)    4.都可以遵循协议    5.都可以被扩展    不同点:    1.类可以继承,而结构体不能    2.类可以被类型推断    3.类可以通过析构释放内存    4.类他是引用类型,结构体是值类型*/

 

转载于:https://www.cnblogs.com/newBlash/p/4273613.html

你可能感兴趣的文章
Snort***检测系统安装配置
查看>>
Linux优化之IO子系统监控与调优
查看>>
Install Toad for Oracle 10.6 on Winows 7 X64
查看>>
发福利喽!学Spark课程送Spark技术峰会的门票........
查看>>
Ubuntu忘记登录密码的解决办法
查看>>
Oracle数据库培训-PLSQL编程
查看>>
突破虚拟化极限,自由畅翔云端
查看>>
F5和VMware-共同交付软件定义的数据中心
查看>>
Java并发编程的艺术
查看>>
批量分发ssh公钥证书
查看>>
iOS encrypt Md5, Sha1,Base64
查看>>
git 常用命令
查看>>
Android系统启动流程(四)Launcher启动过程与系统启动流程
查看>>
jquery增,删,改一个html标签的class名字
查看>>
缓存技术
查看>>
怎么样将自己开发的Android应用程序编译到系统Image中
查看>>
Android度量单位说明(DIP,DP,PX,SP)
查看>>
Spring MVC和Struts2的比较的优点
查看>>
Redis配置文件redis.conf详解学习笔记八
查看>>
c++ qt 组播总结
查看>>