Skip to content

Instantly share code, notes, and snippets.

@jbrains
Created November 21, 2018 09:56
Show Gist options
  • Save jbrains/ecb542b02e31b02850b8273f26e13319 to your computer and use it in GitHub Desktop.
Save jbrains/ecb542b02e31b02850b8273f26e13319 to your computer and use it in GitHub Desktop.
What obvious way of using Vavr's fold() am I missing here?
private String linesOf(List<String> lines) {
StringBuilder stringBuilder = new StringBuilder();
lines.map(line -> stringBuilder.append(line).append(System.lineSeparator()));
return stringBuilder.toString();
}
@jbrains
Copy link
Author

jbrains commented Nov 21, 2018

Aha! So that differentiates "fold left" from "fold". I think I understand. Thank you.

@jbrains
Copy link
Author

jbrains commented Nov 24, 2018

@jovaneyck Much better, thanks!

package ca.jbrains.pos.test;

import io.vavr.collection.LinearSeq;

public class LineBuilder {

    private final StringBuilder stringBuilder = new StringBuilder();

    public static String linesOf(LinearSeq<String> lines) {
        return lines.foldLeft(new LineBuilder(), LineBuilder::appendAsALine).toString();
    }

    public LineBuilder appendAsALine(String line) {
        this.stringBuilder.append(line).append(System.lineSeparator());
        return this;
    }

    @Override
    public String toString() {
        return stringBuilder.toString();
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment