就地修改protobuf中的重复字段



我是Kotlin的新手,有一个关于如何修改Kotlin中的重复字段的问题。

假设我有一条类似的消息

message A {
optional B b = 0;
}
message B {
repeated C c = 0;
}
message C {
optional string value = 0;
}

现在,我收到一个来自端点的请求(消息(,如果没有设置,我想更新每个值字段。

fun updateValue(a: A): A{
a.b.c.forEach {
if (it.value.isNullOrEmpty()) {
it.apply {
value = "balabala"
}
}
}
}

但我总是犯错误;val不能被重新分配";。我怎样才能做到这一点?

您不能。Kotlin中的协议缓冲区(就像在Java中一样(不能就地修改;您只能创建proto对象的新的、修改过的版本。

(还要注意,您不必使用isNullOrEmpty;proto字段不能为null。(

最新更新