NSLog文に2つのObjective-Cドット演算子を列挙しますか?

NSLogステートメントでObjective-Cドット演算子を使用して2つの値を出力する場合は、次のようにします。

NSLog(@"The height is %i and the width is %i", myRect.height, myRect.width);

しかし、私はmyRectを一度metioningするだけの高さと幅を列挙する方法はありますか?結局のところ、彼らは同じオブジェクトとクラスから来ています。そのような簡略表記がありますか?

NSLog(@"The height is %i and the width is %i", myRect.height, width);

PS。私は上記のコードは動作しませんが、私は上記のコードに似て動作する何かが不足していることを知っていますか?

1
いいえ、このような短縮形はありません。
追加された 著者 Luke,
私はこれを許してくれるOO言語を考えていません。あなたがPythonでこれを行うことができると教えてください:)
追加された 著者 Shahzeb,
myRect のタイプは何ですか?独自のカスタムタイプまたはココアタイプ?
追加された 著者 user557219,

3 答え

heightwidth のメンバを持つ唯一の組み込み型であるため、 myRectCGSize 型であると仮定します)、はいがあります:

NSLog(@"myRect: %@", NSStringFromCGSize(myRect));

NSStringFromCGSizeNSStringFromCGPoint などもあります。これらは、メンバー抽出を行う組み込み関数です。

2
追加された
ありがとう、しかし、私はこれが私が達成したかったとは思わない。
追加された 著者 Glen Selle,
NSSize を忘れないでください。
追加された 著者 user557219,

あなた自身のヘルパールーチンを書くことができます:

void ReportDimensions(rectangle_t myRect) {
    NSLog(@"The height is %i and the width is %i", myRect.height, myRect.width);
    return;
}

次に、あなたのコードでこれを使うことができます:

rectangle_t r = /* rectangle from somewhere */
ReportDimensions(r);

これにより、文字列とオブジェクト名を何度も繰り返し入力する必要がなくなります。代わりにこれを記述したい場合は、これを rectangle クラスのメソッドとして追加することもできます:

r.ReportDimensions();
2
追加された
これは面白いようです。私は以前にヘルパールーチンを使用したり書いたりしたことはありません。私はそれを調べなければならないでしょう。どうもありがとう!
追加された 著者 Glen Selle,

いいえ、省略形はありません。

1つのオブジェクトから多くのフィールドにアクセスするときの暗黙の慣習は、オブジェクトのローカル変数に非常に短い名前を使用する可能性があるため、たとえば r.width、r.height などです。

1
追加された
さて、ありがとう!私はちょうど不思議だった。
追加された 著者 Glen Selle,