Спіс дзве Objective-C кропкавых аператараў ў аператары NSLog?

Калі я хачу надрукаваць два значэння з дапамогай аператараobjective-cкропкі з сцвярджэннем NSLog, я б зрабіў гэта так:

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

Але ці ёсць спосаб, у якім я магу пералічыць вышыню і шырыню толькі metioning myRect адзін раз? У рэшце рэшт, яны з таго ж аб'екта і класа. Ці ёсць нейкая стэнаграфія, як так?

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

PS. Я ведаю, што прыведзены вышэй код не працуе, але я прапускаю нешта, што будзе працаваць падобны на прыведзены вышэй код?

1
Не, не стэнаграфія, як гэта.
дададзена аўтар Luke, крыніца
Я не думаю, што любы мову ГА, які дазволіў бы гэта і правільна. Не кажыце мне, што вы можаце зрабіць гэта ў Python :)
дададзена аўтар Shahzeb, крыніца
Што тып myRect ? Ваш уласны карыстацкі тып або тып какава?
дададзена аўтар user557219, крыніца

3 адказы

Мяркуючы, што myRect мае тып CGSize (бо гэта адзіны убудаваны тып, які мае непасрэдны вышыня і шырыня Карыстальнікі ), а затым <моцны> Ды ёсць:

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

Там таксама NSStringFromCGSize , NSStringFromCGPoint і г.д. Гэтыя убудаваныя функцыі, якія робяць выманне члена для вас.

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

Гэта пазбавіць вас ад паўторнага ўводу радкі з імем і аб'ект зноў і зноў. Можна нават дадаць гэта як метадам прамавугольніка клас, калі вы хочаце, каб напісаць замест гэтага:

r.ReportDimensions();
2
дададзена
Гэта выглядае цікава. Я ніколі не выкарыстоўваў ці напісаў памочнік Routine раней. Я буду глядзець на гэта. Вялікі дзякуй!
дададзена аўтар Glen Selle, крыніца

Не, не стэнаграфія.

Unspoken канвенцыі пры доступе шмат палёў з аднаго аб'екта можна з дапамогай вельмі кароткіх імёнаў для лакальнай зменнай аб'екта, так што вы атрымаеце толькі, напрыклад, r.width, r.height .

1
дададзена
Добра, дзякуй! Мне было проста цікава.
дададзена аўтар Glen Selle, крыніца