Ich habe diese Art von Situation in Objective-C:DRY Meta-Code in Objective-C
[aCoder encodeObject:self.control forKey:@"control"];
[aCoder encodeObject:self.command forKey:@"command"];
[aCoder encodeObject:self.channel forKey:@"channel"];
[aCoder encodeObject:self.data1 forKey:@"data1"];
In Ruby oder Groovy Ich kann dies mit Blöcken und ein klein bisschen um von Messing eine Zeile haben anstatt vier. Ich weiß, Objective-C hat viele dynamische Eigenschaften. Wie kann dieser Code destilliert werden? nur der Name dieser Methode als String
genial, genau das, was ich brauchte, danke! Wird das mit Blöcken immer besser/besser? –
Der einzige Block, der hier in einer Sprache wie Ruby verwendet würde, wäre, diesen Code an 'Array # each' weiterzuleiten. Aber da ObjC nativ eine For/Each-Style-Schleife unterstützt, brauchen wir das nicht wirklich. Sie könnten natürlich etwas mit Blöcken und einem Iterator machen, aber es würde nichts lösen und der Selektor und das Aufrufen von self, um den Wert einer Eigenschaft zu erhalten, würde von diesem Beispiel überhaupt nicht geändert werden. Blöcke würden das unnötig erschweren. Es sei denn, du hattest einen wirklich guten Grund. –
@Yar, es ist nicht so schön wie Ruby (auf lange Sicht), aber Sie können enumerateObjectsUsingBlock verwenden: um dies sauberer zu machen. –