методы с использованием нескольких аргументов - PullRequest
1 голос
/ 07 февраля 2010

Я новичок в объективе-c, я смотрю это видео, и этот парень говорит о настройке аргументов в методах Я родом из php и многих других языков. Я изучал c в прошлом, и базовый язык практически одинаков для всех языков.

В методе, подобном этому:

- (void) setTo: (int) n over: (int) d {
....
}

как бы это выглядело на другом языке? если бы это был C, этот метод был бы написан так?

void function setTo(int n, int d) {
..
}

но тогда я не понимаю, что такое конец и какова его цель. Это сбивает с толку. Единственный способ понять этот язык - сравнить его с другим.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2010

В Objective-C имена методов имеют аргументы, брошенные в середине. Я бы сказал, что для - (void)setTo:(int)n over:(int)d хорошей аналогичной функцией C будет void function setTo_over_(int n, int d).

Я добавил подчеркивание и слово «over», потому что размещение аргументов и слово «over» являются частями имени метода. Название метода действительно setTo:over:. «setTo» - это только первая половина имени метода.

Это действительно полезно, когда вы делаете что-то вроде, например, colorWithRed:1.0 green:0.5 blue:0.7. В Си это будет colorWithRed_green_blue_(1.0, 0.5, 0.7), и немного сложно сказать, какое число какое. Благодаря способности Objective-C помещать аргументы прямо в середине имени метода, мы можем ясно видеть, какое число является каким компонентом цвета.

(Еще хуже, потому что подчеркивания выглядят смешно, и просто из-за соглашения, вполне вероятно, что функция C будет больше похожа на color(1.0, 0.5, 0.7), и теперь мы просто запутались. То есть то, что мы обычно используем Objective Функция C для аргументов в середине метода предназначена для поддельных «именованных аргументов».)

Вы должны проверить Стиль Какао для Objective-C, Часть I . В нем есть подробное объяснение хорошего стиля при именовании методов и небольшое сравнение методов Objective-C и функций C.

0 голосов
/ 07 февраля 2010

У меня была точно такая же проблема только сегодня, когда я только начал изучать Objective-C. Оказывается, «over» является меткой для аргумента d, поэтому для вызова этого метода вы должны написать:

[object setTo: 1 over: 2]

Вы можете просто опустить его, но это считается плохим стилем:

-(void) setTo: (int) n : (int) d
...
[object setTo: 1 :2]

Во втором случае, что означает «2»? Наличие ярлыка делает его более понятным.

Имейте в виду, что метка является частью имени метода , поэтому два вышеприведенных метода на самом деле являются разными методами. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...