Передача новой структуры в качестве параметра - PullRequest
7 голосов
/ 04 июля 2011

У меня есть такая функция:

- (void)addBalloon:(COLOR)color:(VELOCITY)velocity:(LOCATION)location 

Где COLOR - это перечисление, а VELOCITY и LOCATION - это структуры, определенные в заголовочном файле констант.

VELOCITY и LOCATION оба хранилищадве целые, x и y.

При вызове этого метода я бы назвал его так:

VELOCITY vel;
LOCATION loc;

vel.x = 100.0;
vel.y = 0.0;

loc.x = 10.0;
loc.y = 10.0;

[self addBalloon:Red:vel:loc];

Но мне это кажется неорганизованным.Я хотел бы вызвать функцию непосредственно в одной строке при создании структуры в строке ..

Вот мой вопрос: я не уверен, что это можно сделать с помощью #define .., но если это возможно't .. является единственным другим жизнеспособным вариантом, создающим функцию, которая возвращает VELOCITY или LOCATION и принимает входные данные x и y?

Я хотел бы сделать что-то вроде следующего:

[self addBalloon:Red:VELOCITY(100.0, 0.0):LOCATION(10.0, 10.0)];

1 Ответ

7 голосов
/ 04 июля 2011

Вы можете использовать синтаксис C99 для обозначенных инициализаторов:

[self addBalloon:Red:(VELOCITY){100.0, 0.0}:(LOCATION){10.0, 10.0}];

или

[self addBalloon:Red:(VELOCITY){.x=100.0, .y=0.0}:(LOCATION){.x=10.0, .y=10.0}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...