2011-10-27 6 views
1

私はのNSLogステートメントを使用して、Objective-Cのドット演算子を使って2つの値を印刷したい場合は、私はそうのようにそれを行うだろう:NSLogステートメントに2つのObjective-Cドット演算子を列挙しますか?

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。私は上記のコードは動作しませんが、私は上記のコードに似て動作する何かが不足していることを知っていますか?

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); 

これが終わっ文字列とオブジェクト名を再入力する必要がなくなります

+4

いいえ、このような短縮形はありません。 – Luke

+0

私はこのことを正しく認めてくれるオブジェクト指向言語はないと思います。 Pythonでこれを行うことができると教えてください:) – Shahzeb

+0

'myRect'の型は何ですか?独自のカスタムタイプまたはココアタイプ? –

答えて

1

はいいえ、速記ありません。

オブジェクトの多くのフィールドにアクセスすると、オブジェクトのローカル変数に実際に短い名前が使用される可能性があるので、例えばr.width, r.heightとなります。 myRectはタイプCGSizeであると仮定すると、

+0

ありがとうございました!私はちょうど不思議だった。 –

2

独自のヘルパールーチンを書くことができますそしてもう一度。あなたの代わりにこれを書きたいならばあなたもrectangleクラスのメソッドとしてこれを追加することができます。

r.ReportDimensions(); 
+0

これは面白そうです。私はこれまでヘルパールーチンを使用したり書いたりしたことはありません。私はそれを調べなければならないでしょう。どうもありがとう! –

2

(つまり即時heightwidthメンバーを持っているビルトインタイプのみなので)、その後、YESがあります:

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

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

+0

NSSizeを忘れないでください。 –

+0

ありがとうございますが、これは私が達成したかったとは思いません。 –

関連する問題