Apa arti dari baris kode ini?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
The ?
dan :
membingungkan saya.
objective-c
c
syntax
operators
conditional-operator
danielreiser
sumber
sumber
variable ?: anotherVariable
, apa artinya ini? '(valOrVar != 0) ? valOrVar : anotherValorvar
Jawaban:
Ini adalah operator ternary C (Objective-C adalah superset dari C):
secara semantik setara dengan
Terner tanpa elemen pertama (mis.
variable ?: anotherVariable
) Berarti sama dengan(valOrVar != 0) ? valOrVar : anotherValOrVar
sumber
?:
) bahkan lebih baik dalam situasi di mana sisi kiri adalah ekspresi, karena?:
mencegahnya dievaluasi lebih dari sekali. Misalnya:[myArray firstObject] ? [myArray firstObject] : @"Hello World";
panggilanfirstObject
dua kali (jikafirstObject
tidak kembalinil
), di mana[myArray firstObject] ?: @"Hello World";
menghasilkan hasil yang identik tetapi tidak pernah memanggilfirstObject
lebih dari satu kali.?:
juga disebut operator Elvis karena kemiripan emoji dengan penyanyi. Dan tentu saja dalam kasus ini karena kita menjatuhkan satu elemen, itu bukan lagi operator ternary tetapi operator biner . Operator biner meliputi sebagian besar operator biasanya kita gunakan ketika pemrograman (*
,+
,-
,^
,|
,||
,&
,>>
, dll).Ini operator ternary atau kondisional. Bentuk dasarnya adalah:
Di mana nilai-nilai hanya akan dievaluasi jika mereka dipilih.
sumber
condition ? codeIfTrue : codeIfFalse
Sederhananya, logikanya
(condition) ? {code for YES} : {code for NO}
sumber
Membangun penjelasan luar biasa Barry Wark ...
Apa yang begitu penting tentang operator ternary adalah ia dapat digunakan di tempat-tempat yang jika tidak bisa tidak. yaitu: Di dalam parameter kondisi atau metode.
... yang sangat berguna untuk konstanta preprosesor:
Ini menghemat Anda dari keharusan menggunakan dan melepaskan variabel lokal dalam pola if-else. FTW!
sumber
Itu hanya operator ternary biasa . Jika bagian sebelum tanda tanya itu benar, ia mengevaluasi dan mengembalikan bagian sebelum titik dua, jika tidak ia mengevaluasi dan mengembalikan bagian setelah titik dua.
seperti
sumber
Ini adalah bagian dari C, jadi tidak spesifik Objective-C. Berikut ini terjemahan ke dalam
if
pernyataan:sumber
Ini hanya bentuk singkat dari penulisan pernyataan if-then-else. Artinya sama dengan kode berikut:
sumber
Objektif-C
Untuk Swift
sumber
Fakta menyenangkan, di objektif-c jika Anda ingin memeriksa null / nil Misalnya:
Cara cepat untuk melakukannya adalah:
Kemudian Anda dapat memperbaruinya dengan cara paling sederhana:
Karena dalam Objective-C:
Jadi katakanlah Anda menulis:
parameter kedua mengembalikan nilai boolean, dengan demikian pengecualian dilemparkan.
sumber
Ini adalah operator ternary, seperti pernyataan if / else.
Dalam operator ternary seperti itu: kondisi? apa yang harus dilakukan jika kondisinya benar: apa yang harus dilakukan jika itu salah;
sumber
Saya baru belajar sesuatu yang baru tentang operator ternary. Bentuk pendek yang menghilangkan operan tengah benar-benar elegan, dan merupakan salah satu dari banyak alasan bahwa C tetap relevan. FYI, saya pertama kali benar-benar memahami hal ini dalam konteks rutin yang diimplementasikan dalam C #, yang juga mendukung operator ternary. Karena operator ternary berada dalam C, maka dapat dipastikan bahwa itu akan menjadi bahasa lain yang pada dasarnya adalah ekstensi daripadanya (misalnya, Objective-C, C #).
sumber
Seperti semua orang menyebutnya, Ini adalah cara untuk mewakili operator bersyarat
menggunakan operator ternary
(condition)? true:false
Untuk menambahkan informasi tambahan, Dalam cepat kami memiliki cara baru untuk menggunakannya??
.Yang mirip dengan
setara dengan
if (a>c)?a:c
==> Sama denganif (a>c)?:c
alih-alih
?:
kita bisa menggunakan??
swift.sumber
cara
sumber