2014-07-02 15 views
6

this iOS eğitmeninde, ? ve ardından : numaralı bir kod satırı vardır. Kodun yorumu bağlamında, bunun bir tür üçlü işlem olduğunu düşündüm, ancak, bu, üç yüzlü bir operatörün sözdizimi değil. ?: ile bu kodda neler olup bittiği için bir isim var mı??: Objective C

// Initialize the list of weather items if it doesn't exist 
NSMutableArray *array = self.xmlWeather[@"weather"] ?: [NSMutableArray array]; 

cevap

20

bir GCC extension verilmiştir: atlanmış İşlenenler

bir koşullu ekspresyonu orta işlenen ite

6,7 Şartlı. Daha sonra, eğer ilk işlenen sıfır değilse, onun değeri koşullu ifadenin değeridir. Bu sıfır olmayan nedenle

ifade

x ? : y 

x arasındaki bir değere sahiptir; aksi halde y değeri.

Bu örnek bu basit durumda

x ? x : y 

mükemmel eşdeğerdir, orta işlenen çıkarma özelliği özellikle yararlı değildir. İşe yarar olduğunda, ilk işlenenin yaptığı veya (bir makro argüman ise) bir yan etki içermesidir. Daha sonra, işleneni ortada tekrarlamak, yan etkiyi iki kez gerçekleştirir. Orta işleneni atlamak, zaten yeniden hesaplamanın istenmeyen etkileri olmadan hesaplanmış olan değeri kullanır.