1

次のような構文を使用することを認識しています。

(something) ? TRUE : FALSE

しかし、チェック変数を返したい場合はどうすればよいでしょうか? 例えば:

if([myVar objectForKey:objectName])
    return [myVar objectForKey:objectName]
else
    return -1;

それを行うコードの最初の行のような構文はありますか?

もちろん、私は単に次のようなことができることを知っています:

([myVar objectForKey:objectName]) ? return [myVar objectForKey:objectName] :  return -1;

しかし、これは私の知る限り非常に醜い解決策です

4

3 に答える 3

2

ステートメントで三項演算子(その構文と呼ばれるもの)を使用する簡単な方法あります。? :return

return [myVar objectForKey:objectName] ? [myVar objectForKey:objectName] : -1;

また、クイック変数を使用して、より簡潔にすることができます。

id result = [myVar objectForKey:objectName];
return result ? result : -1;

でも!ここでの返品タイプは何ですか?タイプが、を返す可能性があります。または、[myVar objectForKey:objectName]タイプがを返す可能性があります。1つはObjective-Cオブジェクトで、もう1つはCプリミティブです。この特定の例では、何かが怪しいようです。id-1NSInteger

于 2012-06-26T16:27:03.960 に答える
2

頭のてっぺんから、これはうまくいくはずだと思います(編集:ただし、andyvn22の回答を参照してください:戻り値の型)

id foo;
return (foo = [myVar objectForKey:objectName]) ? foo : -1;

ただし、原則として、ほとんどの場合、少し簡潔だが不可解な表記法よりも、理解しやすい表記法を使用する方が適切です。

于 2012-06-26T16:26:55.753 に答える
2

何を求めているのかわかりませんが、いつでも次のようなことができます。

id foo = [myVar objectForKey:objectName];
return (foo) ? foo : -1;

また

return [myVar objectForKey:objectName] ? [myVar objectForKey:objectName] : -1;
于 2012-06-26T16:19:12.637 に答える