2016-09-12 2 views
0

Nach dem Hinzufügen geschachtelter Nachricht erhalte ich verschachtelte Nachrichten von Hauptnachricht und bekam nichts.Wie verschachtelte Nachrichten zu bereits erstellten Nachrichten hinzugefügt werden? (in Scala)

Sie können es in den Protokollen sehen: 1 und 2. Größe der Liste 0!

Irgendwelche Ideen?

message PacketPlayers 
{ 
    repeated PacketPlayer players = 1; 
} 

enter image description here

+0

ist Ihre PacketPlayers.players eine veränderbare oder eine unveränderliche Liste? – Samar

+0

@Samar es ist unveränderlich seq standardmäßig, kann nicht geändert werden –

+0

Ist PacketPlayers.players ein val oder var, können Sie den Code für Ihre PacketPlayers-Klasse zeigen? Es ist auch besser, wenn Sie Ihren Code einfügen, anstatt png's einzufügen. Sie erhalten mehr Antworten. – Samar

Antwort

1

ScalaPB Fallklassen sind unveränderlich. In Ihrem Beispiel würde addPlayers die aufgerufene Instanz nicht ändern, aber eine neue Instanz von PacketPlayer mit den zusätzlichen Playern zurückgeben.

Es ist möglich, veränderbare Arrays und Vars beim Erstellen des neuen Objekts zu vermeiden. Zum Beispiel:

val players = onlinePlayers.keySet.map(makePacketPlayer) 
val packetPlayers = PacketPlayers().withPlayers(players) 
+0

vielen Dank! –

Verwandte Themen