Mat*_*som 1 sockets tcp kotlin
我现在正在给Kotlin一个正在进行的项目的旋转.这个项目要求我打开一个Socket并在端口上侦听TCP数据包,以便我以后可以解析它们.在Java中,如果使用缓冲区读取器,套接字和服务器套接字定义了引用的变量,则以下方法有效:
while((CurrentLine = ClientBufferReader.readLine()) != null){FullString += CurrentLine}
Run Code Online (Sandbox Code Playgroud)
但是,在Kotlin中,这不起作用,因为无法评估作业.我怎样才能在Kotlin中检索相同的结果?
在这种特殊情况下,您可以将其重写为
val FullString = generateSequence { ClientBufferReader.readLine() }.joinToString(separator = "")
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为generateSequence计算传递给它的lambda,直到它返回null并发出所有非null项.joinToString然后String使用a 有效地创建连接StringBuilder.
一般来说,模式
while((x = foo()) != something) { bar() }
Run Code Online (Sandbox Code Playgroud)
可以替换为
var x = foo()
while (x != something) {
bar()
x = foo()
}
Run Code Online (Sandbox Code Playgroud)
虽然显然这更加冗长.
还有一点需要注意:您的变量名称不应以大写字母开头.有关详细信息,请参阅样式指南
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |