数组和闭包 swift特点

作者:星晚
链接:https://www.zhihu.com/question/24002984/answer/108694231
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我真心觉得swift有时挺恶心的,理由只是因为Chris Lattner这货让我感觉真的有时是完完全全处于脑洞大开的状态,如果是想要学习swift的,学习成本那真的是,唉~~~:就拿数组Array和闭包Closure这两货举个例(不建议各位以数字进行命名,下面只是图方便)😕/ 定义数组的几种形式
var array1 = Array()
var array2 : Array = Array()
var array3 : Array = Array()
var array4 : Array = Array()
var array5 : Array = Int
var array6 : [Int] = Array()
var array7 : [Int] = Int
var array8 = [1, 2, 3, 4]

写完我就呵呵了。。。因为swift这种灵活性简直令人发指,很多其他语言都会尽量去固定语法格式,这种能写出这么多形式的,也许也挺好的不是,但学习成本嗖嗖的,你永远不知道别人会写出什么形式的代码出来啊摔!!!后来我遇到了闭包这货,唉,以下全称一个闭包的减肥之路:

func greatorFun2(x : Int,y : Int) -> Bool {

return x > y

}

paopaoSort(&data,function : greatorFun2)

//调用写成闭包

paopaoSort(&data) { (x : Int, y : Int) -> Bool in

return x > y

}
//首先可以省略参数的类型

paopaoSort(&data) { (x , y ) -> Bool in

return x > y

}
// 然后返回值类型可以省略

paopaoSort(&data) { (x , y ) in

return x > y

}

// 再则,当只有一行闭包代码 return 都可以省略掉

paopaoSort(&data) { (x , y ) in

x > y

}

你以为到这就结束了么,呵呵,还是太年轻了~你发现参数名也可以省略!!然后用“美金”来买通编译器让你通过,( $0 代表第一个参数 ,$1第二个参数)

paopaoSort(&data) {

$0 > $1

}

此处可以省略只有逻辑(只有一个符号)了,加上拖尾闭包的概念就成一个{>}这种东西了,我简直凌乱了好么。

//paopaoSort(&data) { > }

paopaoSort(&data, function: > )

过掉一天,你回来看代码一看我去这东西是啥?可读性不是一般的差,你可以保证自己不写这种简式的代码,但能保证别人不写?

真的swift太灵活了,这样真的很不好,之后希望苹果能做出改变,毕竟入了ios这坑,为了钱,我还是要学下去的,即时学习成本真的好高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值