Значение параметра по умолчанию Objective C

plt.plot построит линии, как вы заметили. Что вам нужно, так это plt.bar, который построит барплот. При условии, что названия моделей сохранены в списке names и точности в списке results, как в вашем фрагменте кода, это должно сделать:

plt.bar(names,results)
14
задан Matt Egan 16 May 2009 в 05:49
поделиться

3 ответа

Default arguments don't exist in Objective-C, per se. They can't really, because the argument count is inextricably tied to the method name — each colon corresponds to one argument.

Objective-C programmers accomplish a similar goal, though, by creating "convenience" methods that just call to a more "primitive" method with some of the arguments filled in with default values. For example, -[NSArray indexOfObject:] could be implemented as version of -[NSArray indexOfObject:inRange:] with an argument of NSMakeRange(0, [self count]) for the inRange: part.

In this case, though, I don't think your book is talking about that. I think it simply means to reduce the fraction if YES is given for the reduce: argument and not reduce it if NO is given.

25
ответ дан 1 December 2019 в 06:24
поделиться

Существует два стандартных шаблона для достижения желаемого.

(1) напишите метод с множеством аргументов, а затем предоставьте меньше удобных версий аргументов. Например, рассмотрим следующие методы в NSString:

- (NSComparisonResult)compare:(NSString *)string;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask
            range:(NSRange)compareRange;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask
            range:(NSRange)compareRange locale:(id)locale;

Первые три концептуально [и, вероятно, конкретно, я не проверял] реализованы как вызовы до четвертой версии. Это -compare: calls -compare: options: range: locale: с соответствующими значениями по умолчанию для трех дополнительных аргументов.

(2) Другой шаблон - реализовать версию метода с множеством аргументов и предоставить значения по умолчанию, когда аргумент равен NULL / nil или имеет значение, указывающее, что значение по умолчанию желательно. NSData имеет методы, которые реализованы с помощью этого шаблона. Например:

+ (id)dataWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask
            error:(NSError **)errorPtr;

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

10
ответ дан 1 December 2019 в 06:24
поделиться

No, default arguments are a feature of C++, not C or Objective-C.

What you would have to do in objective-c is the following (using your psuedo code above):

function myFunction ($array, $sort)

function myFunction ($array)
// call myFunction($array, FALSE)
1
ответ дан 1 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: