285

このコード行はどういう意味ですか?

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

と私?:混乱させます。

4

13 に答える 13

450

これは C の三項演算子です (Objective-C は C のスーパーセットです)。

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

意味的に同等です

if(inPseudoEditMode) {
 label.frame = kLabelIndentedRect;
} else {
 label.frame = kLabelRect;
}

最初の要素のない 3 項 (例: variable ?: anotherVariable) は、(valOrVar != 0) ? valOrVar : anotherValOrVar

于 2010-04-07T19:45:59.377 に答える
187

三項演算子または条件演算子です。その基本的な形式は次のとおりです。

condition ? valueIfTrue : valueIfFalse

値が選択された場合にのみ評価される場所。

于 2010-04-07T19:46:59.917 に答える
63

簡単に言えば、ロジックは次のようになります

(condition) ? {code for YES} : {code for NO}

于 2014-02-19T21:27:25.210 に答える
36

Barry Wark の優れた説明に基づいています...

三項演算子の重要な点は、if-else では使用できない場所で使用できることです。ie: 条件またはメソッド パラメータ内。

[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]

...これは、プリプロセッサ定数の優れた用途です。

// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")

// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]

これにより、if-else パターンでローカル変数を使用および解放する必要がなくなります。すごい!

于 2010-05-06T15:57:00.473 に答える
17

これは通常の三項演算子です。疑問符の前の部分が true の場合は、コロンの前の部分を評価して返します。それ以外の場合は、コロンの後の部分を評価して返します。

a?b:c

のようなものです

if(a)
    b;
else
    c;
于 2010-04-07T19:49:31.450 に答える
4

これは C の一部であるため、Objective-C 固有ではありません。if声明への翻訳は次のとおりです。

if (inPseudoEditMode)
    label.frame = kLabelIndentedRec;
else
    label.frame = kLabelRect;
于 2010-04-07T19:46:15.727 に答える
4

これは、if-then-else ステートメントの短い形式です。次のコードと同じ意味です。

if(inPseudoEditMode)
  label.frame = kLabelIndentedRect;
else
  label.frame = kLabelRect;
于 2010-04-07T19:46:58.317 に答える
1

if/else ステートメントのような三項演算子です。

if(a > b) {
what to do;
}
else {
what to do;
}

三項演算子では、次のようになります。条件が true の場合の処理​​: false の場合の処理​​。

(a > b) ? what to do if true : what to do if false;
于 2014-01-06T21:03:26.680 に答える
1
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;

意味

int padding; 
if ([[UIScreen mainScreen] bounds].size.height <= 480)
  padding = 15;
else
  padding = 55; 
于 2014-01-28T02:10:38.323 に答える
1

皆さんもおっしゃっていた通り、条件演算子の表現方法です

if (condition){ 
    true 
} 
else {
    false
}

三項演算子の使用(condition)? true:false 追加情報を追加するために、swift では を使用してそれを表す新しい方法があり??ます。

let imageObject: UIImage = (UIImage(named: "ImageName")) ?? (initialOfUsername.capitalizedString).imageFromString

似ているのはどれですか

int a = 6, c= 5;
if (a > c) 
{ 
 a is greater
} else {
 c is greater
}

と同等です

if (a>c)?a:c==> に等しいif (a>c)?:c

代わりに?:使用できるの??は迅速です。

于 2016-03-23T08:52:50.100 に答える