码迷,mamicode.com
首页 > 编程语言 > 详细

Swift 吐槽下Swift里一个逼死强迫症的语法:中缀语法

时间:2015-12-11 15:12:22      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

中缀语法是OC里特有的一种,就是在函数的参数前面加一个解释词,让调用的时候明白该参数的含义

比如:

-(void)processDataWithparamaA:(NSString *)paramaA paramaB:(NSString *)paramaB{
}

调用的时候:

    [self processDataWithparamaA:@"A" paramaB:@"B"];

不过你发现没,这中缀语法的前提是你必须在函数名的最前面,写个With啥的说明第一个参数的名字,否则第一个参数是没有中缀的。

这样写,确实让调用的时候看起来非常顺眼,[xxxxxxWithparamaA:@"A" paramaB:@"B"] 参数看起来好像非常一致啊,好评。

 

那我们再回到swift,假如我们这样声明一个函数

    func processData2(paramaA:String,paramaB:String){}

但是他的调用竟然学OC的中缀,省略了第一个参数,那谁来告诉我第一个参数啥意思?。。

        processData2("a", paramaB: "b")

技术分享作为一个强迫症,我不能忍啊

 

如果开发这个语言的是为了让我们适应OC的函数命名习惯(就是函数名里要加个Withxxx,xxx是第一个参数的中缀)

那我就必须这样声明:     

    func processData2WithparamaA(paramaA:String,paramaB:String){}

卧槽,这是什么鬼!!。。

然后调用呢?。。。尼玛,在括号外面了有木有。。。里面的paramaA简直毫无存在感啊

        processData2WithparamaA("a", paramaB: "b")

 

OC调用函数是这样的 [self processDataWithparamaA:@"A" paramaB:@"B"]

两边是中括号啊

这种优雅你Swift的小括号学不来的啊。。

 

好在,开发Swift的那位Chris Lattner仁兄,又想到某些开发者不喜欢调用的时候带什么鸡毛中缀,于是想粗了加一个下划线来省略中缀的方法:

    func processData3(paramaA:String,_ paramaB:String){}

 

这样,调用的时候就再也不需要写参数了,妈妈再也不担心我范强迫症了:

        processData3("a", "b")

 

然后,夷?哪里好像不对劲? 。。第一个paramaA居然变得可有可无了(其实一直以来都是可有可无的),意思是说,完全可以这样写

 func processData3(_ paramaA:String,_ paramaB:String){}

编译是能通过,但是编译器会提示你,这种写法是不规范的。

 

这又是何必啊。。。

技术分享

给我留条生路啊。。。

Swift 吐槽下Swift里一个逼死强迫症的语法:中缀语法

标签:

原文地址:http://www.cnblogs.com/rayshen/p/5038937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!