Vavr Try.withResources - co zrobić gdy wynikiem operacji jest Try<Try<T>>

Vavr Try.withResources - co zrobić gdy wynikiem operacji jest Try<Try<T>>
J5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0
Kopiuj
    fun test(elements: Array<Object>): Try<ByteArray> =
            Try.withResources { ByteArrayOutputStream() }
                    .of { output ->
                        Try.withResources { SomeObjectOutputStream(output) }
                                  .of { someOutput ->
                                       someOutput.writeObject(elements)
                                       output.toByteArray()
                        }
                    }.flatMap { it }

Czy da się to ładniej rozwiązać niż flatMap { it }?
Czy może jest jakaś opcja, żeby całość lepiej zapisać?

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
3
Kopiuj
fun test(elements: Array<Any>): Try<ByteArray> = Try.of {
    ByteArrayOutputStream().use { output ->
        SomeObjectOutputStream(output).use { someOutput ->
            someOutput.writeObject(elements)
            output.toByteArray()
        }
    }
}

Jeszcze pytanie czy w ogóle ten Try jest potrzebny? W sensie: jakoś sensownie możesz obsłużyć ewentualny błąd? (a to zależy od tego co robi Twój program)

J5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0
jarekr000000 napisał(a):
Kopiuj
fun test(elements: Array<Any>): Try<ByteArray> = Try.of {
    ByteArrayOutputStream().use { output ->
        SomeObjectOutputStream(output).use { someOutput ->
            someOutput.writeObject(elements)
            output.toByteArray()
        }
    }
}

Jeszcze pytanie czy w ogóle ten Try jest potrzebny? W sensie: jakoś sensownie możesz obsłużyć ewentualny błąd? (a to zależy od tego co robi Twój program)

Po krótkim zastanowieniu, stwierdziłem, że gdy się to wywali i tak nie będę miał jak tego sensownie obslużyć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.