我正在一个新的代码库中查看一些代码,我遇到了这一行,我很难处理:
self.button1.hidden = self.button2.hidden = self.button3.hidden = self.button4.hidden = NO;
这对我来说根本不太可读。这是说,如果所有其他按钮都没有隐藏,那么button1就应该隐藏吗?
试着这样分解:
self.button4.hidden = NO;
self.button3.hidden = self.button4.hidden; // We just set self.button4.hidden to NO, so this passes that value to self.button3.hidden
self.button2.hidden = self.button3.hidden;
self.button1.hidden = self.button2.hidden;
它只是以一种巧妙的方式将它们全部设置为NO
不,您应该从右向左阅读。按钮4.hidden被设置为NO,然后按钮3.hidden被设为NO,接着按钮2.hidden被设定为NO,再接着按钮1.hidden被置为NO。
最后,这只是将所有这些按钮的隐藏属性设置为NO的一种奇怪方式。
它们将按以下顺序分配:
self.button4.hidden = NO;
self.button3.hidden = self.button4.hidden;
self.button2.hidden = self.button3.hidden;
self.button1.hidden = self.button2.hidden;
这就是赋值运算符Type& operator=(const Type& other)
返回对自身的引用的一个重要原因,这样这些赋值就可以链接在一起。