Swift 面试题及其答案(3)

笔试面试2018-09-25王华老师

view2.alpha=0.5//Yes!

问题4–Swift1.0orlater

下面的代码是把数组里面的名字按字母的顺序排序,看上去比较复杂。尽最大的可能简化闭包里的代码。

letanimals=["fish","cat","chicken","dog"]

letsortedAnimals=animals.sort{(one:String,two:String)->Boolin

returnone<two

}

答案:

第一个简化的是参数。系统的参数类型推断功能,可以计算出闭包里面参数的类型,所以你不必定义参数的类型:

letsortedAnimals=animals.sort{(one,two)->Boolinreturnone<two}

函数返回值也可以被推断出来,所以简化掉,代码变为:

letsortedAnimals=animals.sort{(one,two)inreturnone<two}

这个$i符号可以代替参数名字,代码进一步简化为:

letsortedAnimals=animals.sort{return$0<$1}

在一个独立的闭包内,return这个关键字是可以省略的。最后声明的返回值就是闭包的返回值:

letsortedAnimals=animals.sort{$0<$1}

这简化很多了,但是我们不能止步于此!

对于字符串,有一个定义如下的比较函数:

funcBool

这个简单的小函数可以使你的代码简洁如下:

letsortedAnimals=animals.sort(<)

注意每一步的编译结果都相同,但是最后一步你的闭包里只有一个字符。

问题5–Swift1.0orlater

下面的代码创建了两个类Address和Person,并且创建了两个实例对象分别代表Ray和Brain.

classAddress{

varfullAddress:String

相关推荐

猜你喜欢

大家正在看

换一换