Это так просто.
let dict = SaveDate.reduce(into: [String: Double]()) { (result, data) in
result[data.Label, default: 0] += data.Money
}
Или, точнее,
let dict = SaveDate.reduce(into: [String: Double]()) { [111][$1.Label, default: 0] += $1.Money }
dict
// ["test2": 15.0, "test3": 30.0, "test1": 100.0]
blockquote>Примечание: Вы должны использовать lowerCamelCase для имен переменных в соответствии с рекомендациями Swift API .
Я думаю, что это обрабатывается легче любой со вспомогательным методом (непротестированный код):
public String myMethod() {
StringBuilder sb = new StringBuilder();
addToBuffer(sb, "Hello").addToBuffer("there,");
addToBuffer(sb, "it").addToBuffer(sb, "works");
}
private StringBuilder addToBuffer(StringBuilder sb, String what) {
return sb.append(what).append(' '); // char is even faster here! ;)
}
Или даже с помощью шаблона Разработчика с быстрым интерфейсом (также непротестированный код):
public String myMethod() {
SBBuilder builder = new SBBuilder()
.add("Hello").add("there")
.add("it", "works", "just", "fine!");
for (int i = 0; i < 10; i++) {
builder.add("adding").add(String.valueOf(i));
}
System.out.println(builder.build());
}
public static class SBBuilder {
private StringBuilder sb = new StringBuilder();
public SBBuilder add(String... parts) {
for (String p : parts) {
sb.append(p).append(' '); // char is even faster here! ;)
}
return this;
}
public String build() {
return sb.toString();
}
}
Вот статья о предмете.
Надежда это помогает!:)
StringBuffer является окончательным. Вы не можете произойти из него. Лучшее решение действительно состоит в том, чтобы добавить дополнение для себя. Запишите метод для него и используйте Постоянное ДОПОЛНЕНИЕМ так, чтобы можно было легко изменить его, или лучше помещать его в параметр.
Необходимо использовать StringBuilder.
Где возможно, рекомендуется, чтобы этот класс использовался в предпочтении к StringBuffer, поскольку это будет быстрее являться объектом большинства реализаций.
Просто добавьте пространство сами, это достаточно легко согласно Вашему собственному примеру.
Разве Вы не можете создать новый класс, который повторяется StringBuffer
и добавьте appendWithTrailingSpace()
метод?
CustomStringBuffer str = new CustomStringBuffer();
str.appendWithTrailingSpace("string value");
(Хотя можно хотеть назвать метод чем-то немного короче.)
Другая возможность состоит в том, что объекты StringBuilder возвращают себя, когда Вы звоните, добавляют, означая, что можно сделать:
str.append("string value").append(" ");
Не совсем как пленка, но это - вероятно, более легкое решение, чем + "" метод.
Другая возможность состоит в том, чтобы создать класс обертки, как PaddedStringBuilder, который предоставляет те же методы, но применяет дополнение, Вы хотите, так как Вы не можете наследоваться.