//闭包:类似Oc中的block 反向传值引起代码的回调

func hasClosureMathes(arr : [Int],value:Int,cb:(num:Int,value : Int)->Bool)->Bool{

for item1 in arr{

if cb(num: item1, value: value){

return true

}

}

return false

}

//in 是闭包的标志

var v1 = hasClosureMathes([1,2,3,4,43,12], 2) { (num, value) -> Bool in

if num < value{

return true

}else{

return false

}

}

println(v1)

//定义一个数组 里面string类型的人名,判断数组里面是否有一个叫小美的人,返回“大家好,我叫小美”如果没有返回“咦,怎么找不到小美”

func findXiaoMei(namelist:[String],name:String,condontion:(num:String,value:String)->Bool)->String{

for findName in namelist{

if condontion(num: findName, value: name){

return "大家好,我叫小美"

}

}

return "咦,怎么找不到小美"

}

var v2 = findXiaoMei(["小美","大黄","小明","小华"], "小美") { (num, value) -> Bool in

num == value//自动判断是true还是false

}

println(v2)

//如果闭包的代码块只有一句代码

var v3 = findXiaoMei(["小美","大黄","小明","小华"], "小啊", {

$0==$1

})

//$0表示传入的第一个参数,$1表示传入的第二个参数

println(v3)

//闭包在实际应用中都有哪些?

//数组的map属性,可以遍历数组,然后对其进行相应的操作

//泛型,比较抽象。它会根据你进行得操作作出判断给你返回相应的值。比如你进行+操作。他就会返回int的数组,如果进行>判断,他就会给你返回true或false的值

var numbers = [24,22,12,23,11]

let mapedNnumbers = numbers.map({

number in number < 10

})

println(mapedNnumbers)

let sortedNumbers = numbers.sorted({

$0<$1

})

println(sortedNumbers)

//总结函数和闭包的区别。

//本质都是一样的,引起代码的回调。只不过是,一个是直接调用函数名,闭包是直接传入代码块

//在完整的闭包写法中,加入func关键字,他就是一个函数

//函数去掉func 加上 in就会变成了闭包

//闭包可以省去参数列表和返回值,用$0 $1.... 代替

//类和对象

//类里面可以有常量,变量和函数

class shape {

var numberOfSide = 0

let defultDscription = "这是个

swift-闭包和类的声明的更多相关文章

  1. Swift面向对象基础(上)——Swift中的类和结构体(上)

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

  2. Swift闭包概念与常见使用场景总结

    ·Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些 ...

  3. python动态创建类的声明

    动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...

  4. OC-03类的声明和实现

    例子 //类名:Car//属性:轮胎个数.时速//行为:跑 #import<Foundation/Foundation.h >//完整的写一个函数:函数的声明和定义(实现)//完整的写一个 ...

  5. c++类的声明和对象的定义---10

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化. ...

  6. IOS基础之 (三) 类的声明和对象的创建

    一 OC类的声明和实现语法 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end //...表示省略 ...

  7. Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行; 否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量; 同时GCC ...

  8. Objective-C学习篇01—类的声明与实现

    Objective-C,是美国人布莱德·确斯(Brad Cox)于 1980 年年初发明的一 种程序设计语言,其与同时代的 C++ 一样,都是在 C 的基础上加入面向对象特性扩充而成的.Objecti ...

  9. 你好,C++(32) 类是对现实世界的抽象和描述 6.2.1 类的声明和定义

    6.2  类:当C++爱上面向对象 类这个概念是面向对象思想在C++中的具体体现:它既是封装的结果,同时也是继承和多态的载体.因此,要想学习C++中的面向对象程序设计,也就必须从“类”开始. 6.2. ...

  10. 关于C++的变量和类的声明和定义

    什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...

随机推荐

  1. POJ 2728 Desert King

    Description David the Great has just become the king of a desert country. To win the respect of his ...

  2. OC中 self.view.frame.size.height = 100; 不能通过编译的原因

    在OC中,当需要修改一个view的尺寸时,通常是通过先将 self.view.fram赋值给一个临时变量,然后修改临时变量,最后将临时变量赋值给 self.view.frame.代码如下: // 1. ...

  3. bug,不该怕~敢敢test就是了

    转载自:http://bbs.itcast.cn/thread-10103-1-1.html 当程序员的经历让我知道了一些关于软件编程的事情.下面的这些事情可能会让朋友们对软件开发感到惊讶: 一个程序 ...

  4. 微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码

    微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码. 本文使用的接口库是  :https://github.com/chendong152/Weixin ...

  5. Android开发书籍推荐

    当你看到这些文字时,那么恭喜你,你可能选择了一个无限可能的方向. Android,Google出品,信誉保证,你值得深入研究. 学习一样新事物或许有多种方式,报培训班,看视频,向高手请教等等,但一本好 ...

  6. 高亮选中MEMO某一行

    选中第5行 //转到指定行并选中这行的文本 procedure SelectLine(Memo1: TMemo; ln: Integer); begin Memo1.SelStart := SendM ...

  7. netbeans下将全部jar包打成一个,俗称fat jar

    netbeans的java项目中.默认会将配置好的外部引用jar包,复制到dist文件夹的lib文件夹中去.假设须要公布出去.就须要将dist文件夹生成的jar和lib文件夹都拷贝出去公布,不方便. ...

  8. 简洁 Abstract Factory模式(3.1)

    镇楼 在某些书中使用了二维图说明抽象工厂模式.非常好,可是yqj2065不喜欢他们的产品族/产品等级,改成品牌/产品类型. 抽象工厂模式(abstract factory pattern)较工厂方法模 ...

  9. oracle drop table and purge

    一.drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 通过查询回收站 ...

  10. 神奇的 BlocksKit(1):源码分析(下)

    私有类 _BKObserver _BKObserver 是用来观测属性的对象,它在接口中定义了 4 个属性: @property (nonatomic,readonly,unsafe_unretain ...