swift-闭包和类的声明
//闭包:类似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-闭包和类的声明的更多相关文章
- Swift面向对象基础(上)——Swift中的类和结构体(上)
学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...
- Swift闭包概念与常见使用场景总结
·Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些 ...
- python动态创建类的声明
动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...
- OC-03类的声明和实现
例子 //类名:Car//属性:轮胎个数.时速//行为:跑 #import<Foundation/Foundation.h >//完整的写一个函数:函数的声明和定义(实现)//完整的写一个 ...
- c++类的声明和对象的定义---10
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化. ...
- IOS基础之 (三) 类的声明和对象的创建
一 OC类的声明和实现语法 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end //...表示省略 ...
- Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行; 否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量; 同时GCC ...
- Objective-C学习篇01—类的声明与实现
Objective-C,是美国人布莱德·确斯(Brad Cox)于 1980 年年初发明的一 种程序设计语言,其与同时代的 C++ 一样,都是在 C 的基础上加入面向对象特性扩充而成的.Objecti ...
- 你好,C++(32) 类是对现实世界的抽象和描述 6.2.1 类的声明和定义
6.2 类:当C++爱上面向对象 类这个概念是面向对象思想在C++中的具体体现:它既是封装的结果,同时也是继承和多态的载体.因此,要想学习C++中的面向对象程序设计,也就必须从“类”开始. 6.2. ...
- 关于C++的变量和类的声明和定义
什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...
随机推荐
- [CCC 1996 01]Deficient, Perfect, and Abundant
CCC加拿大高中生信息学奥赛 其余来源 CODEVS[3312]——CCC 1996 01 Deficient, Perfect, and Abundant ——http://codevs.cn/pr ...
- 【CSS】Beginner6:Border
1.border-style:solid实线,dashed虚线,double双线,dotted点状,groove凹槽,ridge垄状,inset,outset 2.border0-width:bord ...
- weka 集成学习
import java.io.*;import weka.classifiers.*;import weka.classifiers.meta.Vote;import weka.core.Instan ...
- HDU3466-Proud Merchants(01背包变形)
需要排序的01背包. 这种题排序时只需要考虑两个怎么排,重载小于号就可以了. 需要注意的是,如果一个物品你想先放进背包里,那么你排序是要放到后面!01背包的放置顺序的倒着的! 看到别人的博客都只是比较 ...
- 在YII中使用Redis等缓存
Yii AR 单行数据-自动缓存机制 | LOCKPHP Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶 | LOCKPHP 缓存 - 权威指南 - Yii F ...
- php排序之冒泡排序
冒泡排序比较简单.作为很多公司面试笔试题常常出现,要求手写该排序算法.双层循环,不断的与后面的比较,如果大于后面的,调换两者顺序即可. 演示效果如图: 代码如下: <?php function ...
- 从CR线下活动学到的:如何组织一个小的线下活动
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf 周末在腾讯组织了GR,活动达到了预期的收获,从这次活动我主 ...
- 【Android - 进阶】之自定义视图浅析
1 概述 Android自定义View / ViewGroup的步骤大致如下: 1) 自定义属性: 2) 选择和设置构造方法: 3) 重写onMeasure()方法: 4) 重写onDra ...
- Android ArrayAdpater 填充集合
在这里我们新创建一个任务来演示 然后再布局文件中定义一个ListView 来当作显示数据的容器,布局文件代码如下: <LinearLayout xmlns:android="http: ...
- dmesg 程序崩溃调试2
dmesg命令基于缓冲区打印信息dmesg -c可以清除该内存信息清除后demsg 命令不显示任何信息,但可以到/var/log/dmesg查看信息 dmesg |tail 20dmesg |head ...