前言
从OC3.1开始引入了类似C语言中array通过下标运算符访问数组元素的特性,同时字典也可以通过Key访问对应的元素
常用的访问数组和字典元素的方式
NSString *str = [array objectAtIndex:0];
NSString *name = [dict objectForKey:@"name"];
上面通过数组和字典的Method来访问其中元素的方法是没问题的,甚至说是我们Coding时的最佳实践.
但是,程序员是一群充满创造力的群里,为了偷懒绝对可以脑洞大开,所以有没有更加Clean Code的方法来达到同样的目的呢?
答案当然是: 有,而且你一定见过
这里,说一句题外话,Swift也在其evolution演进过程中,给这门新语言也赋予了下标访问的能力,看来这门技术都成了编程语言的标配了😛
Clean Code 下标访问
NSString *str = array[0];
NSString *name = dict[@"name"];
完
为什么能这么干
原理其实就是,APPLE给NSArray实现了下标运算符,让其等价于调用下面的方法,同理适用于NSDictionary
(id)objectAtIndexedSubscript:(NSUInteger)idx;
(void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
我们开发者能干些什么
如果,我是说如果,我们对于自定义的类也需要实现下标访问元素的功能,那么我们就可以通过声明和实现上述两个方法就可以给我们自己的类赋予这样的能力.
除了NSArray,NSDictionary,APPLE的SDK中大量引入了这种技术,比如PhotoKit中获取的照片集合类PHFetchResult:
结语
今天文章的内容很少,是自己在开发中的所思所想,记录下来,越来越觉得一个语言的演进过程是非常有意思的过程,有精力的同学可以关注Swift的swift-evolution