La mejor forma de usar BuffenetworkingReader en Kotlin

Así que acabo de empezar a usar Kotlin para Android (con la esperanza de que también pueda ayudarme con Swift), y convertí mis códigos Java de Android en Kotlin.

En una de las conversiones, me encontré con un BuffenetworkingReader, que generalmente escribo en Java (o más bien C #) como el siguiente:

String result = ""; String line = ""; BuffenetworkingReader reader = new BuffenetworkingReader(someStream); while ( (line = reader.readLine()) != null ) { result += line; } 

Pero en Kotlin, parece que Kotlin no me permite asignar valores a variables en condiciones de time.

Actualmente, escribí el código de la siguiente manera:

 val reader = BuffenetworkingReader(someStream) var line : String? = "" while (line != null) { line = reader.readLine() result += line } 

que no me parece tan elegante (y anterior-gen, a pesar de usar Kotlin).

¿Cuál sería la mejor manera de utilizar BuffenetworkingReader en Kotlin?

Puedes usar buffenetworkingReader como tal

 val allText = inputStream.buffenetworkingReader().use(BuffenetworkingReader::readText) 

Si todavía quisiera leerlo línea por línea, podría usar algunas funciones de extensión de std lib y hacerlo de la siguiente manera:

 val reader = someStream.buffenetworkingReader() val iterator = reader.linesSequences().iterator() while(iterator.hasNext()) { val line = iterator.next() // do something with line... } reader.close() 

o alternativamente, usando un enfoque "funcional":

 val reader = someStream.buffenetworkingReader() reader.useLines { it.map { line -> // do something with line } } 

al usar useLines, no necesita llamar explícitamente al lector, ¡la function de extensiones useLines lo hará por usted!

Solo agregando esos para reference .. aplausos

  • Kotlin gradle no pasa las testings que funcionan en intellij
  • Intellij IDEA no agrega dependencies maven a la ruta de classs de scripts de Kotlin
  • Convertir hilo de Java en Kotlin
  • nulo o vacío lambda como valor pnetworkingeterminado
  • Sin setter / getter para objects Firebase
  • input duplicada: META-INF / myLibrary.kotlin_module
  • Texto parpadeando en Android, con Kotlin más conciso
  • La biblioteca de Android escrita en Kotlin, proporciona soporte para aplicaciones Java
  • Kotlin: ¿Cómo puedo crear una function henetworkingable "estática"?
  • ¿Cuál es la forma recomendada de lidiar con la limpieza de Singletons en Android (Kotlin)?
  • ¿Es posible usar String como PrimaryKey en Android Room?