Wirklich, eine Menge, wie elegant (oder klug) ist eine Sprache kommt darauf an, wie gut es vermeidet Schleifen. für, während; sogar schnelle Aufzählung Ausdrücke sind ein Widerstand. Ganz gleich, wie sehr Sie sie beschönigen, Schleifen sind ein Code-Block, der etwas einfacher in natürlicher Sprache zu beschreiben ist.
„hol mir das durchschnittliche Gehalt aller Mitarbeiter in diesem Array“,
double totalSalary = 0.0;
for (Employee *employee in employees) {
totalSalary += [employee.salary doubleValue];
}
double averageSalary = totalSalary/[employees count];
gegen ...
Glücklicherweise Schlüsselwert Codierung gibt uns eine viel concise-- fast Rubin-like - Art und Weise, dies zu tun:
[employees valueForKeyPath:@"@avg.salary"];
KVC Sammlung Operatoren ermöglichen Aktionen auf einer Sammlung mit Schlüsselpfad Notat durchgeführt werden Ionen in valueForKeyPath:.
Jedes Mal, wenn Sie @ in einem Schlüsselpfad sehen, bezeichnet es eine bestimmte Aggregatfunktion, deren Ergebnis wie jeder andere Schlüsselpfad zurückgegeben oder verkettet werden kann.
Schnelle Aufzählung ist schneller als KVC.
Ich hoffe, es hilft Ihnen.
Ich bezweifle, dass Sie einen signifikanten Unterschied für weniger als 100 Untersichten bemerken werden. Für große Arrays habe ich einen ähnlichen Vergleich hier gemacht: http://StackOverflow.com/a/15931719/1187415, wo sich die schnelle Aufzählung als die schnellste herausgestellt hat. –
Warum versuchst du es nicht selbst? Sollte leicht zu untersuchen sein ... Persönlich würde ich mit der Lösung gehen, die lesbarer ist. –
die kvc-sache ist viel besser lesbar, aber es ist die schnelle aufzählung ist schneller ich werde damit gehen. Aber im Moment habe ich keine Zeit zu testen ... :( –