plt.plot
построит линии, как вы заметили. Что вам нужно, так это plt.bar
, который построит барплот. При условии, что названия моделей сохранены в списке names
и точности в списке results
, как в вашем фрагменте кода, это должно сделать:
plt.bar(names,results)
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.
Существует два стандартных шаблона для достижения желаемого.
(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 будет читать содержимое файла, используя внутреннюю конфигурацию по умолчанию. Эта конфигурация по умолчанию может измениться со временем.
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)