本文共 1983 字,大约阅读时间需要 6 分钟。
Swift 的语言特性使得它非常适合被用于以函数式编程思想,如果你还没开始用函数式的方式来使用它,那么可以从现在开始,尝试着利用函数式的便利性。
let indicateView = UIImageView(frame: view.frame)indicateView.image = UIImage(named: "how2use")self.view.addSubview(indicateView)
我刚刚写了上面这段代码,来让我的当前页面显示名为 “how2use” 的这张图片。看起来好像是我做了三件事:
但是实际上,我只需要 frame、imageName 这两个东西就可以把这三行代码配置好,或者说我能不能用这两个参数来把上面的三行代码缩减为一行。
extension UIImageView { func frameSelf (rect:CGRect) -> UIImageView { self.frame = rect return self } func imageSelf (imageName:String) -> UIImageView { self.image = UIImage(named: imageName) return self } func placeSelf (view:UIView) -> UIImageView { view.addSubview(self) return self }}
写了上面这些方法之后,代码修改成这个样子了:
let indicateView = UIImageView() .frameSelf(view.frame) .imageSelf("how2use") .placeSelf(self.view)
为了代码可读性,这里我写了四行,但显然这是一行代码。
继而我发现 indicateView 这个名字没有存在的必要,于是我废弃掉 placeSelf 这个方法,改成这样:self.view.addSubview(UIImageView() .frameSelf(view.frame) .imageSelf("how2use"))
一行代码,不引入多余的变量。
如果你愿意的话,这个模式还可以继续写下去。extension UIImageView { func tagSelf (tag:Int) -> UIImageView { self.tag = tag return self } func modeSelf(contentMode:UIViewContentMode) -> UIImageView { self.contentMode = contentMode return self }}
最后代码会变成这种形式:
NSObject().func1().func2().func3()......
userImage.blur().mosaic() // 马赛克本身是清晰的userImage.mosaic().blur() // 马赛克本身是模糊的推荐一下个人博客:
转载地址:http://pgcta.baihongyu.com/