Добрый день, переписываю свои пакеты под котлин и столкнулся с проблемой, а именно в том, что в котлин нельзя присвоить и вернуть. Код который был:
public class Packet
{
private ByteBuf buf;
protected ByteBuf buf()
{
return buf != null ? buf : (buf = Unpooled.buffer());
}
@Override
public final void fromBytes(ByteBuf buf)
{
this.buf = buf;
}
@Override
public final void toBytes(ByteBuf buf)
{
if (buf != null)
buf.writeBytes(this.buf);
}
}
Тот же код, но в котлин.
class Packet
{
private var buf: ByteBuf? = null
protected fun buf(): ByteBuf
{
return buf ?: ({buf = Unpooled.buffer(); buf}()!!)
}
override fun fromBytes(buf: ByteBuf)
{
this.buf = buf
}
override fun toBytes(buf: ByteBuf?)
{
buf?.writeBytes(this.buf)
}
}
Дело в том, что buf() не должен возвращать null, но получается так, что возвращается null. Что было сделано не так? Как нужно сделать?