Bu yüzden Android için Kotlin'i kullanmaya başladım (Swift ile de bana yardımcı olabileceğini umarak) ve Android Java kodlarımı Kotlin'e dönüştürdüm. Kotlin'de BufferedReader'ı kullanmanın en iyi yolu
String result = "";
String line = "";
BufferedReader reader = new BufferedReader(someStream);
while ((line = reader.readLine()) != null) {
result += line;
}
Ama KOTLIN içinde
, Kotlin değil gibi görünüyor: Aşağıdaki gibi dönüşümlere birinde , ben genellikle Java (daha doğrusu C#) 'de yazardım bir BufferedReader, tökezledi Koşullarda değişkenlere değer atamamı sağlayın. (KOTLIN kullanarak rağmen ve önceki-gen)val reader = BufferedReader(someStream)
var line : String? = ""
while (line != null) {
line = reader.readLine()
result += line
}
Çok zarif bulmuyorum:
Şu anda, aşağıdaki gibi kod yazdım.
Kotlin'de BufferedReader'ı kullanmanın en iyi yolu ne olurdu?
val reader = someStream.bufferedReader()
val iterator = reader.linesSequences().iterator()
while(iterator.hasNext()) {
val line = iterator.next()
// do something with line...
}
reader.close()
veya şu şekildedir:
Bunun gibi dizeleri birleştirmeyin. 'StringBuilder.append()' işlevini kullanın. Performans sorunları var – rafid059
@ rafid059 Gerçekten mi? Java derleyicileri (ve böylece Kotlin derleyicisi) döngü dizgelerini döngüler halinde optimize ettiklerini düşündüm. –
Evet, java derleyici bir + = string concat'ı StringBuilder işlemine dönüştürür, ancak burada bir döngü içinde ve derleyici döngü bölümünü optimize edemez. Bu kodu 'javap -c Main.class' kullanarak çözerseniz, döngü içinde bir StringBuilder örneği görürsünüz. Ancak her zaman en son 'sonuç 'ile yeni bir dizgi oluşturucu oluşturulur ve sonra' satır 'buna eklenir. ** TLDR; ** derleyici basit bir for-loop dize birleştirme için optimize edemezsiniz – rafid059